J'ai créé une table croisée dynamique dans la même feuille avec les données source. Maintenant, je veux créer un deuxième tableau croisé dynamique dans la même feuille avec la même source de données, mais avec différentes données imprimées dans le tableau croisé dynamique (bien sûr). Je continue d'obtenir une erreur, car il est dit que Table Pivot ne peut pas remplacer une autre table de Pivot. Cependant, ils ont choisi les plages où les tableaux croisés dynamiques sont créés, ils ne se remplacent pas les uns les autres. J'ai testé manuellement aussi. De plus, si j'enregistre le processus, il utilise simplement les références exactes pour les données sources, que je ne veux pas utiliser parce que le lastrow et la lastcolumn changent tous les jours. Juste pour le rappeler, la macro fonctionne très bien pour créer la première table. La deuxième table est le problème. Ci-dessous, je vais fournir mon code tel qu'il est maintenant.Deux tableaux croisés dynamiques dans la même feuille Excel
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable1 As PivotTable
Dim PTable2 As PivotTable
Dim PRange As Range
Application.DisplayAlerts = True
Set DSheet = Worksheets("Budget_Report")
Set PRange = DSheet.Range(Cells(1, 53), Cells.SpecialCells(xlCellTypeLastCell))
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)
Set PTable1 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(4, 1), TableName:="PivotTable1")
Set PTable2 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(17, 2), TableName:="PivotTable2")
With ActiveSheet.PivotTables("PivotTable1")
With .PivotFields("T-Lane")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
With ActiveSheet.PivotTables("PivotTable2")
With .PivotFields("Oran")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
Sans voir vos données, il est difficile de dire si ou comment les tableaux croisés se chevaucheront. Pourquoi utilisez-vous le code pour créer les tableaux croisés dynamiques? L'idée avec les tableaux croisés dynamiques est que seules les données changent, donc les définitions des tableaux pivotants restent les mêmes et il suffit de les rafraîchir. En outre, envisagez d'utiliser des objets de table Excel comme source pour les tableaux croisés dynamiques, puis la source de données augmentera et rétrécira dynamiquement. Des livres ont été écrits sur ce sujet, vous pouvez donc faire un peu plus de recherche et d'apprentissage sur les tableaux croisés dynamiques et les sources de données dynamiques. – teylyn
@teylyn merci pour les commentaires! Je voulais les créer automatiquement, car cette macro s'exécuterait chaque jour dans différents classeurs. (Je vais copier coller tous les jours à d'autres feuilles! –