Notifications
Clear all

Alterar fonte de dados de uma Tabela Dinamica no VBA

3 Posts
3 Usuários
0 Reactions
2,469 Visualizações
(@rodrigof)
Posts: 1
New Member
Topic starter
 

Olá. Pessoal, tudo bem?
Tenho a seguinte dúvida. Possuo uma tabela dinâmica que é alimentada por uma base de dados que se altera todos os dias (nº colunas e nº linhas). Gostaria de fazer uma macro que reconhecesse essa variação de Range para poder alterar a fonte de dados desta minha tabela dinâmica. O que venho tentando até agora não dá certo, se tento gravar a macro. mesmo utilizando as tecnicas de CTRL + SETA, na gravação sai um intervalo RxCx:RyCy específico. Como faço para solucionar esta questão?
Abaixo segue a minha macro (que está errada):
Obrigado.

Sub Macro2()
Dim CSU As String
A = Sheets ("base acionaria CSU").Select
B = Range ("A3").Select
C = Range (Selection, Selection.End(xlToRight)).Select
D = Range (Selection, Selection.End(xlDown)).Select

CSU = A + B + C + D

ActiveSheet.PivotTables("Tabela dinâmica1").ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Z:Composição acionáriaNovo Relatorio[base acionaria CSU final MACRO.xlsm]base acionaria CSU![b]CSU[/b]" _
        , Version:=xlPivotTableVersion14)
End Sub
 
Postado : 16/09/2016 10:10 am
edilsonfl
(@edilsonfl)
Posts: 227
Estimable Member
 

Olá Rodrigof

o código abaixo identifica a ultima linha e a ultima coluna tomando como base B3
veja se consegue adaaptar para o seu problema

Sub contar_linhas_e_colnas()

'Identifica a ultima linha na coluna b da planilha Base_dados
   Dim UltimaLinha As Long
   UltimaLinha = Sheets("Base_dados").Cells(Cells.Rows.Count, 2).End(xlUp).Row
    
'Identifica a ultima coluna na linha 3 da planilha Base_dados
   Dim UltimaColuna As Long
    UltimaColuna = Cells(3, Cells.Columns.Count).End(xlToLeft).Column
End Sub

Quando ajuda for útil dê um clique na mãozinha, isso atribui ponto ao colaborador.

 
Postado : 16/09/2016 10:53 am
(@mprudencio)
Posts: 2749
Famed Member
 

Nao precisa de VBA basta usar um intervalo nomeado com range dinamico.

Com base na tabela (titulos) iniciando na linha 3 coloque essa formula no gerenciador de nome ajustando o nome da planilha trocando o plan1 pelo nome da sua planilha base de dados.

=DESLOC(Plan1!$A$3;0;0;CONT.VALORES(Plan1!$A:$A);CONT.VALORES(Plan1!$3:$3))

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/09/2016 12:37 am