Inquiridor
Filtrar tabela dinamica com "select"

Pergunta
-
Pessoal, estou tentando criar uma macro que possa filtrar uma tabela dinâmica utilizando um valor selecionado em uma determinada célula:
Criei duas planilhas, a primeira (ANÁLISE) com uma tabela geral, a segunda planilha (DETALHAMENTO_DO_CUSTO) com duas tabelas dinâmicas referentes à tabela geral.
Ao selecionar um valor na coluna CÓDIGO da tabela geral, a macro filtraria os dados referentes ao CÓDIGO nas tabelas dinâmicas.
Não tenho muito conhecimento em vba,então encontrei um código similar ao que preciso, mas que dá erro 1004: "não é possivel obter a propriedade PivotTables da classe Worksheet"
Se alguém tiver alguma dica, ajudaria muito!
Private Sub DETALHAMENTO_Click()
Sheets("ANÁLISE").Select
ActiveSheet.PivotTables("Tabela_dinâmica1").PivotFields("Projeto").CurrentPage = Sheets("DETALHAMENTO_DO_CUSTO").Range("A1").Value
End Sub- Editado vssouza domingo, 22 de setembro de 2019 09:03
Todas as Respostas
-
-
Caro Filipe, obrigado pela dica!
Mas acredito que seriam muitos dados para selecionar via segmentação, pois se tratam de mais de 2500 itens para segmentar. Se eu simplesmente selecionar um código da TABELA PRINCIPAL e clicar no botão DETALHAMENTO, seria o ideal. Também poderia ser digitando o código em uma caixa de texto, similar ao que é feito no filtro da tabela dinâmica. O problema todo é que são duas tabelas dinâmicas, as duas têm referências ao mesmo código, então se eu conseguir pra uma, já é um bom caminho pra conseguir para as duas. Estou me esforçando para aprender vba, mas parece que esse problema é nível jedi.
Mas obrigado pela dica!!
-
vssouza...
não é tão Jedi assim, na verdade é até simples:
Dim pt As PivotTable 'pt = PivotTable Set pt = Sheets("nomeDaPlanilha").PivotTables("nomeDaTabelaDinamica") For Each p In pt.PivotFields("COD").PivotItems p.Visible = (p = Range("a1").Value) Next p
Natan
-
-
Pessoal, bom dia.
Tentei o código acima, mas ficou em loop. O laço for....next p faz a planilha mostrar os itens p a p.
Entao criei uma planilha menor, mas que reflete a mesma situacao. Tentei adaptar, pesquisei e estudei outras abordagens, e por mais que alterasse o código radicalmente, o algoritmo me retorna o mesmo erro:https://i.stack.imgur.com/gRPes.jpg
Abaixo segue o link da planilha genérica simplificada. Lembrando que a original possui duas PivotTable com mais de 2500 itens:
https://drive.google.com/file/d/1b2VF9FkqBlDAK0QFaNjsaCSUjCJTvCDq/view?usp=drivesdk
Nela, criei um botão que chama uma box, e esta pede uma string, que filtra o PivotItem das Pivottables 1 E 2.
O problema é que ela só aceita o filtro de entrada "2000". Se eu pedir "1999" ele retorna o erro da imagem acima, e aparentemente nem sequer limpa o filtro anterior.
Por favor, se alguém puder me dizer onde estou errando, agradeceria muito!
- Editado vssouza sexta-feira, 27 de setembro de 2019 12:59 Gramática