Création d'un tableau croisé dynamique à partir d'un ensemble de données. Habituellement, il fonctionne bien la première fois, mais si vous essayez de l'exécuter une deuxième fois, il lance un "Appel ou Argument de procédure invalide" et lorsque vous cliquez sur déboguer, le code met en évidence le problème ci-dessous. Changer le nom du tableau croisé dynamique n'aide pas. La feuille 2 existe et est remplie avec des données. La feuille de données-Résumé existe également et est complètement videAppel ou argument de procédure non valide lors de la création d'un tableau croisé dynamique
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Data-Summary!R5C1", TableName:="PivotTable4", _
DefaultVersion:=xlPivotTableVersion
Le code entier est comme ci-dessous:
Sub Macro1()
'
' Macro1 Macro
'
'
Columns("A:D").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Data-Summary!R5C1", TableName:="PivotTable15", _
DefaultVersion:=xlPivotTableVersion14
Sheets("Data-Summary").Select
Cells(5, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Site")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Channel")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_
"PivotTable3").PivotFields("Cost"), "Count of Cost", xlCount
ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Cost"). _
Orientation = xlHidden
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_
"PivotTable3").PivotFields("Revenue"), "Count of Revenue", xlCount
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Revenue")
.Caption = "Sum of Revenue"
.Function = xlSum
End With
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub