Tableau Croisé dynamique en VBA EXCEL 2003

cs_loulou92300
Messages postés
6
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
22 octobre 2013
- 29 nov. 2006 à 10:44
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
- 29 nov. 2006 à 23:54
Bonjour,

je viens de faire un TCD en enregistrement auto vba sous excel 2003. Mon probléme c'est la plage variable. tous les mois des lignes devront s'ajouter dans mon tableau d'orignie. comment puis je modifier les lignes de commande pour que le macro prenne en compte les nouvelle lignes

merci pour votre aide
cyril

'
ActiveWorkbook.PivotCaches.Add(SourceType:= xlDatabase, SourceData:= _
"'Global aquisition'!R1C1:R736C21"). CreatePivotTable TableDestination: ="", _
TableName:="Tableau croisé dynamique9", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("Segment" _
)
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("C.G.")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique9").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique9").PivotFields("Montant"), _
"Somme de Montant", xlSum
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False

1 réponse

cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
29 nov. 2006 à 23:54
Sans avoir testé, j'imagine que ce serait quelque chose comme ça

"'Global aquisition'!R1C1:R" & nbLignes & "C" & nbcolonnes)

Pour trouver les valeurs de nbLignes et de nbColonnes, tu peux faire comme suit, en supposant que tu es dans la feuille de données
nbLignes = Cells.Find("*", Range("A1"),,, xlByRows, xlPrevious).Row
nbColonnes = Cells.Find("*", Range("A1"),,, xlByColumns, xlPrevious).Column

Comme j'imagine que le nombre de colonnes ne changera pas, il n'est pas nécessaire d'y aller avec la formule, et de tout simplement mettre 21
donc
"'Global aquisition'!R1C1:R" & nbLignes & "C21)

MPi
0