Notifications
Clear all

Filtro em Tabela Dinâmica - VBA

9 Posts
2 Usuários
0 Reactions
4,836 Visualizações
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Bom dia, Srs.

Estou com certa dificuldade em filtrar uma Tabela Dinâmica com VBA, pois tenho 5 shapes que recupero o nome conforme clicado, onde os nomes recuperados estão de acordo com os valores do filtro na tabela.

Não consegui avançar muito no projeto gostaria do auxilio dos senhores.

Toda e qualquer ajuda sempre é bem vinda !!

Segue uma base de exemplo:

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 29/10/2014 7:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Se eu entendi, grave uma macro!....

Sub BA()
    ActiveSheet.PivotTables("TAXA_BOLETO").ClearAllFilters
    With ActiveSheet.PivotTables("TAXA_BOLETO").PivotFields("REGIONAL")
        .PivotItems("AM/RR").Visible = False
        .PivotItems("MG").Visible = False
        .PivotItems("CO").Visible = False
        .PivotItems("N").Visible = False
    End With
End Sub

Sub MG()
    ActiveSheet.PivotTables("TAXA_BOLETO").ClearAllFilters
    With ActiveSheet.PivotTables("TAXA_BOLETO").PivotFields("REGIONAL")
        .PivotItems("AM/RR").Visible = False
        .PivotItems("BA").Visible = False
        .PivotItems("CO").Visible = False
        .PivotItems("N").Visible = False
    End With
End Sub

faça para orestante!

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/10/2014 7:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja um modelo pronto.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/10/2014 7:29 am
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Bom dia, alexandrevba.

Sua resposta e muito bacana, porém ela não fica dinâmica, pois caso venha aparecer novas regiões eu teria que entrar no código e acrescentar em todos.
Ate encontrei algo na net que fica dinâmico mas esta apresentando o seguinte erro:
Código

Sub Atualizar(Tabela, Campo, Filtro)
       Set T1 = ActiveSheet.PivotTables("TAXA_BOLETO").PivotFields("REGIONAL")
       T1.ClearAllFilters
       T1.CurrentPage = Filtro
End Sub

'###########

Sub Filtrar()

Dim NomeObjeto As String
Dim IdObjeto As String

     NomeObjeto = Application.Caller
    IdObjeto = ActiveSheet.DrawingObjects(NomeObjeto).Text
    
    Atualizar "TAXA_BOLETO", "REGIONAL", IdObjeto

End Sub

Erro:

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 29/10/2014 7:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente assim..

Sub FiltraAleVBA_13343(stRegion As String)
With ActiveSheet.PivotTables("TAXA_BOLETO").PivotFields("REGIONAL")
    .ClearAllFilters
    .PivotFilters.Add Type:=xlCaptionEquals, Value1:=stRegion
End With
End Sub

Dentro de cada botão insira

Call FiltraAleVBA_13343(Replace(ActiveSheet.Shapes(Application.Caller).Name, "_", "/"))

Ficaria assim..

Sub AM_RR()
Call FiltraAleVBA_13343(Replace(ActiveSheet.Shapes(Application.Caller).Name, "_", "/"))
End Sub
Sub BA()
Call FiltraAleVBA_13343(Replace(ActiveSheet.Shapes(Application.Caller).Name, "_", "/"))
End Sub
Sub CO()
Call FiltraAleVBA_13343(Replace(ActiveSheet.Shapes(Application.Caller).Name, "_", "/"))
End Sub
Sub MG()
Call FiltraAleVBA_13343(Replace(ActiveSheet.Shapes(Application.Caller).Name, "_", "/"))
End Sub
Sub FiltraAleVBA_13343(stRegion As String)
With ActiveSheet.PivotTables("TAXA_BOLETO").PivotFields("REGIONAL")
    .ClearAllFilters
    .PivotFilters.Add Type:=xlCaptionEquals, Value1:=stRegion
End With
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/10/2014 8:50 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dai!!

Só uma observação, caso tu tenha a versão 2010 em diante, não precisa de macros para essa função, o segmentador de dados ou slice faz isso!

Att ;)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/10/2014 8:56 am
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Bom dai!!

Só uma observação, caso tu tenha a versão 2010 em diante, não precisa de macros para essa função, o segmentador de dados ou slice faz isso!

Att ;)

Obrigado, alexandrevba.

Desculpa pela minha ignorância, esse segmentador de dados ou slice, não sabia o que era e nem fui curioso de clicar no botão para descobrir, realizei uma breve pesquisa sobres esses dois individuo achei bastante interessante ele, mas o que estou tentando realizar é:

Quando a pessoa clicar no botão com a respectiva " REGIÃO ", a Tabela Dinâmica vai realizar o filtro, selecionar a parte que ficou visível, gerar uma imagem dessa seleção, salvar na pasta temp como .jpeg, abrir o outlook e colar o corpo do e-mail para enviar, e após fechar o excel limpar a pasta temp.

Vou testar seu código e tentar adaptar a minha necessidade.

Assim que tiver um resultado posto aqui no fórum para os demais colegas!

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 29/10/2014 10:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Quando a pessoa clicar no botão com a respectiva " REGIÃO ", a Tabela Dinâmica vai realizar o filtro, selecionar a parte que ficou visível, gerar uma imagem dessa seleção, salvar na pasta temp como .jpeg, abrir o outlook e colar o corpo do e-mail para enviar, e após fechar o excel limpar a pasta temp.

Neste caso, realmente será necessário fazer uso de Macro, pois o recurso segmentador de dados, seria um filtro mais rápido na TD.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/10/2014 10:43 am
Trindade
(@trindade)
Posts: 278
Reputable Member
Topic starter
 

Bom dia a todos do fórum.

Gostaria mais uma vez agradecer o alexandrevba, que me ajudou a tirar duvidas sobre filtros com VBA em Tabela Dinâmica e me mostrou uma nova forma de realizar filtro de forma rápida e simples como Segmentador de Dados.
Depois de realizar varias pesquisas aqui no fórum e no parceiro google, consegui montar um arquivo que atende minha necessidade.
Tenho duas Planilha que preciso filtrar DDD por DDD, realizar o print da tela que retornou do filtro, colar no corpo do e-mail e enviar para os respectivos destinatário:
Realizar todo esse processo tomava um certo tempo, então resolvi tentar montar algo que me otimiza-se tempo.

1. Montei um arquivo com todos os DDD's;
2. Quanto clico em algum DDD o arquivo verifica se as outras duas planilhas estão;
3. Identificou que esta fechada faz o trabalho de abri ou caso esteja aberta continua com o código;
4. Arquivo aberto de acordo com o shape clicado realiza o filtro em ambas as base;
5. Após filtrado o DDD faz um print da parte selecionada e salva na pasta TEMP;
6. Salvo o arquivo chama o outlook, abre um novo e-mail anexa as duas imagens e faz o envio.

Abaixo estão os três arquivo que montei de teste e que partindo da mesma ideia estará virando produção:

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 31/10/2014 7:17 am