Problème avec un tableau croisé dynamique sous vba

Cacou78

XLDnaute Nouveau
Bonjour, je viens de commencer à coder sous vba et j'ai un petit problème avec mon code qui me renvoit (argument non facultatif) en surlignant le.AddDataField. Voici mon code

Sub creation_TCD()
Dim Ma_feuille As Worksheet
Dim Mon_cache As PivotCache
Dim Mon_TCD As PivotTable
Dim mois As Variant

Set Ma_feuille = Worksheets.Add
Set Mon_cache = ActiveWorkbook.PivotCaches.Create(xlDatabase, "Synt_charge")
Set Mon_TCD = Mon_cache.CreatePivotTable(Ma_feuille.Range("A3"))
Mon_TCD.PivotFields("PQA Engineer").Orientation = xlRowField
Mon_TCD.PivotFields("Project Type").Orientation = xlColumnField
For i = 3 To 21
mois = Worksheets("Synt_charge").Cells(1, i).Value
With Mon_TCD
.AddDataField.PivotFields ("mois"), "charge", xlSum
.DataField("mois").NumberFormat = "0"
End With
End Sub


Le problème viendrait il du for? En fet la jai mis jusqu'a 21 pour tester, mais comme ce chiffre pourra changer en fonction de la volonté de l'utilisateur,c'est pour cela que j'avais besoin d'effectuer une boucle avec un for. Et ne connaissant pas bien la synthaxe à utiliser ni si cela est possible, pourriez vous m'aider?
 

Cacou78

XLDnaute Nouveau
Re : Problème avec un tableau croisé dynamique sous vba

j'ai essayé de construire mon tableau d'une autre manière et la j'obtiens l'erreur d'éxécution 1004 , qui vient de la derniere ligne
Sub TCD()
Dim mois As Variant

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Synt_charge!R1C1:R63C20").CreatePivotTable TableDestination:="", TableName _
:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"PQA Engineer")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Project Type")
.Orientation = xlColumnField
.Position = 1
End With
For i = 3 To 20
mois = Worksheets("Synt_charge").Cells(1, i).Value
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields(mois), _
"charge", xlSum

Next i


End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 763
Messages
2 091 835
Membres
105 076
dernier inscrit
simeand