Página 1 de 1

VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 21 Jun 2020 às 18:26
por RahelCunha
Boa tarde pessoal, tudo bem?

Gostaria que por gentileza verifiquem se podem me ajudar.

Tenho uma base de dados onde na 1ª coluna disponível da aba "Base", que é a coluna "data", eu digito essa data manualmente no formato "dd/mm/aaaa" e depois arrasto para as demais células preenchidas. Criei algumas tabelas dinâmicas na aba "BS_DASH". Porém, gostaria de selecionar automaticamente no filtro de data da tabela, a última data que foi preenchida na base de dados. Tentei algumas aplicações, porém sem sucesso, como por exemplo..


Código: Selecionar todos
ActiveSheet.PivotTables("Tabela dinâmica13").PivotFields("Data"). _
        CurrentPage = Day(Application.Text(Application.Max(Sheets("Base").Range("A:A")), "dd/mm/yyyy"))
Porém retorna sempre "erro 1004".
Imagem

Outro ponto é que essa base de dados é bem extensa...muitas vezes ultrapassa 600.000 linhas. Se notarem, apenas as 2 ultimas linhas estão com fórmulas e eu copio e colo valores diariamente. Tentei utilizar um for next para automatizar, mas não funcionou. Se puderem me auxiliar também. Muito, muito grato mesmo. Obs:Tive que excluir quase todo o arquivo por causa do tamanho máximo aceito, por isso está pequeno.

Abs.

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 07:58
por babdallas
tenta algo assim:
Código: Selecionar todos
Sub FiltroAutomatico()
    Dim vrtData As Variant

    ThisWorkbook.RefreshAll

    With Plan9.PivotTables("Tabela dinâmica5").PivotFields("Data")
        .ClearAllFilters
        .EnableMultiplePageItems = False

        vrtData = "" & Application.Text( _
                    Application.Max(Sheets("Base").Range("A:A")), "m/d/yyyy") & ""
    
        .CurrentPage = vrtData
    End With
End Sub

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 15:16
por RahelCunha
Boa tarde!

Para a tabela dinâmica 13, que é a primeira da aba "Base" continua retornando o erro 1004.
Para as outras tabelas funcionou perfeitamente. Parece ser um conflito de formato, não sei...

Imagem

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 15:22
por babdallas
Esta tabela dinâmica tem o campo data na área de filtros?

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 15:37
por babdallas
Tenta formatar a data da Tabela dinâmica 13 como dd/mm/aaaa ao invés de dd.

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 15:57
por RahelCunha
Boa tarde!

Atualizando o formato dos dados para data e a fonte de dados da tabela dinâmica 13 deu certo. Muito obrigado.
Agora, eu preciso fazer esse mesmo código para cada uma das tabelas disponíveis ou consigo realizar um for each por favor?

Obrigado.

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 16:06
por babdallas
Código: Selecionar todos
For each td in Plan9.PIvotTables
         'Código utilizado anterioremente usando o objeto td ao invés de PIvotTables("Nome da TD")
Next td

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 17:00
por RahelCunha
Ficaria assim?

Se for está retornado erro 1004 no Whith.
Código: Selecionar todos
ub FiltroAutomatico()
    Dim vrtData As Variant

    ThisWorkbook.RefreshAll
    
    For Each Dinamica In Plan9.PivotTables


    [b]With Plan9.PivotTables(Dinamica).PivotFields("Data")[/b]
        .ClearAllFilters
        .EnableMultiplePageItems = False

        vrtData = "" & Application.Text( _
                    Application.Max(Sheets("Base").Range("A:A")), "m/d/yyyy") & ""
   
        .CurrentPage = vrtData
    End With
    
    Next Dinamica
    
End Sub
Imagem

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 22 Jun 2020 às 17:51
por babdallas
Código: Selecionar todos
Sub FiltroAutomatico()
    Dim vrtData As Variant

    ThisWorkbook.RefreshAll
   
    For Each Dinamica In Plan9.PivotTables


    [b]With Dinamica.PivotFields("Data")[/b]
              .ClearAllFilters
              .EnableMultiplePageItems = False

              vrtData = "" & Application.Text( _
                    Application.Max(Sheets("Base").Range("A:A")), "m/d/yyyy") & ""
   
             .CurrentPage = vrtData
    End With
   
    Next Dinamica
   
End Sub

Re: VBA - Selecionar ultima data disponível tabela dinâmica

Enviado: 23 Jun 2020 às 10:48
por RahelCunha
Muito bom babdallas. Ficou simplismente perfeito.Muito obrigado mais uma vez.
Top demais. 1000 x obrigado pela atenção.