locked
Como fazer um filtro atualizar várias tabelas dinâmicas na mesma planilha

    Question

  • Pessoal,

    Estou tentando montar um dashboard e o primeiro problema é que este dashboar exibe os valores por mês. Então criei duas tabelas dinâmicas com o mesmo filtro, mês.

    Gostaria de saber como fazer para que apenas um filtro altere as duas tabelas dinâmicas.
    Sempre tentando fazer o melhor para todos e para o mundo.
    Friday, November 06, 2009 6:16 PM

Answers

  • Sub Selecao_ano_mes()
    '
    ' Selecao_ano_mes Macro
    '

    '
    Dim iAno As Integer
    Dim iMes As Integer
    iMes = InputBox("Digite o Mês: ")
    iAno = InputBox("Digite o Ano: ")

     

        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("ANO_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("MES_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Mês").CurrentPage = iMes
       
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("ANO_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MES_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Mês").CurrentPage = iMes
    End Sub

    Inicie duas varienaves
    é só atribuir para um botão

    BLZ


    Wesley
    • Proposed as answer by Wesley Cesar Friday, November 13, 2009 6:59 PM
    • Marked as answer by Rafhaelbs Tuesday, December 22, 2009 1:10 PM
    Tuesday, November 10, 2009 10:54 AM

All replies

  • Grave uma macro fazendo as duas operações

    e post ela
    Dai colocamos um variavel para as duas

    OK
    e Aguardo

    Wesley
    Friday, November 06, 2009 6:38 PM
  • Sub Selecao_ano_mes()
    '
    ' Selecao_ano_mes Macro
    '
    
    '
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("ANO_INICIAL"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Ano").CurrentPage = _
            "2009"
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Mês").CurrentPage = _
            "(All)"
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("ANO_INICIAL"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").CurrentPage = _
            "2009"
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MES_INICIAL"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Mês").CurrentPage = _
            "10"
    End Sub
    


    Não sei se fiz certo. Agradeço a ajuda.
    Sempre tentando fazer o melhor para todos e para o mundo.
    Friday, November 06, 2009 7:04 PM
  • Sub Selecao_ano_mes()
    '
    ' Selecao_ano_mes Macro
    '

    '
    Dim iAno As Integer
    Dim iMes As Integer
    iMes = InputBox("Digite o Mês: ")
    iAno = InputBox("Digite o Ano: ")

     

        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("ANO_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("MES_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Mês").CurrentPage = iMes
       
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("ANO_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MES_INICIAL").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Mês").CurrentPage = iMes
    End Sub

    Inicie duas varienaves
    é só atribuir para um botão

    BLZ


    Wesley
    • Proposed as answer by Wesley Cesar Friday, November 13, 2009 6:59 PM
    • Marked as answer by Rafhaelbs Tuesday, December 22, 2009 1:10 PM
    Tuesday, November 10, 2009 10:54 AM
  • Olá Wesley,

    Eu ajustei para o que estou querendo e ficou assim:

    Sub Selecao_ano_mes()
    '
    ' Selecao_ano_mes Macro
    '
    '
    Dim iAno As Integer
    Dim iMes As Integer
    'iAno = InputBox("Digite o Ano: ")
    'iMes = InputBox("Digite o Mês: ")
    iAno = Range("B1")
    iMes = Range("B2")
     
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Mês").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Mês").CurrentPage = iMes
       
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Ano").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Mês").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica2").PivotFields("Mês").CurrentPage = iMes
          
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Ano").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Mês").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Mês").CurrentPage = iMes
       
        ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Ano").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Mês").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Mês").CurrentPage = iMes
       
        ActiveSheet.PivotTables("Tabela dinâmica5").PivotFields("Ano").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica5").PivotFields("Ano").CurrentPage = iAno
        ActiveSheet.PivotTables("Tabela dinâmica5").PivotFields("Mês").ClearAllFilters
        ActiveSheet.PivotTables("Tabela dinâmica5").PivotFields("Mês").CurrentPage = iMes
       
       
    End Sub
    Quando testei para quatro tabelas dinâmicas funcionou bem, mas quando inseri uma quinta, o Visual Basic emite um erro dizendo "Memória Insuficiente".

    Você ou alguém teria alguma idéia do por quê disso? Nesse caso, não tenho como trabalhar com mais de quatro t dinâmicas num mesmo sheet???
    Sempre tentando fazer o melhor para todos e para o mundo.
    Monday, December 21, 2009 5:40 PM
  • Olá. Consegui resolver o problema que mencionei.

    Como eu tinha colocado uma tabela dinâmica "em cima da outra", isto é, poucas linhas abaixo da outra, dava erro, pois a função ClearAllFilters da primeira td (a de cima) tentava sobrepor a segunda td (a de baixo).

    Então, apenas retirei a função ClearAllFilters e tudo funcionou como deveria.

    Obrigado Wesley pelo código e um feliz natal a todos.
    Sempre tentando fazer o melhor para todos e para o mundo.
    Tuesday, December 22, 2009 1:12 PM
  • Senhores, obrigado pelas explicações...

    acabei adaptando a seleção que eu precisava fazer em diversos filtros em 2 dinamicas...sem conhecer nada de linguagem, pela conversa de vocês acima consegui resolver meu problema...Muito obrigado!

    - - - -

    Aplica_Filtro Macro
    '

    '
        Ano = Sheets("Plan1").Cells(3, 53)
        Planta = Sheets("Plan1").Cells(4, 53)
        MaterialCC = Sheets("Plan1").Cells(5, 53)
        CC = Sheets("Plan1").Cells(5, 53)
        Sector = Sheets("Plan1").Cells(7, 53)
        Category = Sheets("Plan1").Cells(8, 53)
        Brand = Sheets("Plan1").Cells(9, 53)
        Sub_Brand = Sheets("Plan1").Cells(10, 53)
        Proc = Sheets("Plan1").Cells(6, 53)
        Material = Sheets("Plan1").Cells(11, 53)
       
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Ano").CurrentPage = Ano
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Planta").CurrentPage = Planta
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MaterialCC").CurrentPage = MaterialCC
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("SECTOR").CurrentPage = Sector
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Category").CurrentPage = Category
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Brand 2").CurrentPage = Brand
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Sub Brand 2").CurrentPage = Sub_Brand
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Proc").CurrentPage = Proc
        ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Material").CurrentPage = Material
          
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Ano").CurrentPage = Ano
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Planta").CurrentPage = Planta
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("CC").CurrentPage = CC
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("SECTOR").CurrentPage = Sector
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Category").CurrentPage = Category
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Brand 2").CurrentPage = Brand
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Sub Brand 2").CurrentPage = Sub_Brand
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("Proc").CurrentPage = Proc
        ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields("MATERIAL").CurrentPage = Material
       
        Range("AZ2:BA2").Select
    End Sub

    Thursday, January 20, 2011 8:34 PM
  • Pessoal, boa tarde!

    Tenho quase o mesmo problema que o nosso amigo porém no meu caso eu preciso filtra 2 anos e vários meses, tipo Janeiro, Fevereiro, Março, Abril...etc!

    Alguém pode me ajudar?

    Obrigado!

     

    Rodrigo Mateu

    Monday, March 14, 2011 8:42 PM