OVH Cloud OVH Cloud

Macro incluant un pivot table

3 réponses
Avatar
Sofia
Bonjour,
J'aimerais savoir si je peux inclure l'exécution d'un "pivot table" (tableau
croisé dynamique) dans une macro ? Si oui, y a t il des particularités?
Car j'ai essayé et quand j'exécute ma macro, j'ai un bug et le pivot est vide.
Le msg d'erreur dit "Impossible de lire la propriété PivotFields de la
classe PivotTable.

Quelqu'un peut m'aider???
Merci

3 réponses

Avatar
michdenis
Bonjour Sofia,

Je te suggère d'utiliser l'enregistreur macro d'Excel pendant que tu crées ton tableau croisé dynamique. Le code VBA afférent au
tableau croisé dynamique est très exhaustif et cela demande un peu de pratiques avant d'y aller manuellement. Tu pourras par la
suite, raffiner la syntaxe le cas échéant. Pour cette dernière tâche, tu peux même publier ton code ici... pour avoir de l'aide !


Salutations!



"Sofia" a écrit dans le message de news:
Bonjour,
J'aimerais savoir si je peux inclure l'exécution d'un "pivot table" (tableau
croisé dynamique) dans une macro ? Si oui, y a t il des particularités?
Car j'ai essayé et quand j'exécute ma macro, j'ai un bug et le pivot est vide.
Le msg d'erreur dit "Impossible de lire la propriété PivotFields de la
classe PivotTable.

Quelqu'un peut m'aider???
Merci
Avatar
Sofia
Hello Michdenis,

C'est ce que j'ai fais: j'ai enregistré ma macro pendant que je faisait mon
pivot.

Le pb survient au moment de l'éxécution de la macro : il fait tout bien sauf
que y a aucune donnée dans le pivot et j'ai un msg d'erreur (cf plus bas).

J'avoue ne rien connaitre à VBA donc le code pour moi c'est du charabia :s
Peut être qu'avec le code, quelqu'un pourra m'en dire plus....
Code VBA:
Cells.Select
Range("W1").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C28").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("AE"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Portfolio"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields
RowFields:= _
Array("AE", "Données"), ColumnFields:="Portfolio"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"LocalInvoice_CreditTotal")
.Orientation = xlDataField
.Caption = "Somme de LocalInvoice_CreditTotal"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"LocalInvoice_CreditTotal")
.Orientation = xlDataField
.Caption = "Nombre de LocalInvoice_CreditTotal"
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False
ActiveWindow.SmallScroll Down:=-9
Columns("A:A").ColumnWidth = 22.71
Columns("B:B").ColumnWidth = 20.29
ActiveWindow.SmallScroll Down:=0
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Portfolio")
.PivotItems("(vide)").Visible = False
End With
Columns("B:B").ColumnWidth = 17.71
Range("G6").Select
ActiveCell.FormulaR1C1 = "Prix"
Range("G7").Select
ActiveCell.FormulaR1C1 = "Assigned"
Range("G8").Select
ActiveCell.FormulaR1C1 = "Unassigned"
Range("G9").Select
ActiveCell.FormulaR1C1 = "Editorial"
Range("G14").Select
ActiveCell.FormulaR1C1 = "Volume"
Range("G15").Select
ActiveCell.FormulaR1C1 = "Assigned"
Range("G16").Select
ActiveCell.FormulaR1C1 = "Unassigned"
Range("G17").Select
ActiveCell.FormulaR1C1 = "Editorial"
Range("H14").Select
ActiveCell.FormulaR1C1 = "RF"
Range("I14").Select
ActiveCell.FormulaR1C1 = "RM"
Range("I6").Select
ActiveCell.FormulaR1C1 = "RM"
Range("H6").Select
ActiveCell.FormulaR1C1 = "RF"
Range("H7").Select
End Sub

Si quelqu'un y comprends quelque chose, Aide bien venue ;o) MERCI


Bonjour Sofia,

Je te suggère d'utiliser l'enregistreur macro d'Excel pendant que tu crées ton tableau croisé dynamique. Le code VBA afférent au
tableau croisé dynamique est très exhaustif et cela demande un peu de pratiques avant d'y aller manuellement. Tu pourras par la
suite, raffiner la syntaxe le cas échéant. Pour cette dernière tâche, tu peux même publier ton code ici... pour avoir de l'aide !


Salutations!



"Sofia" a écrit dans le message de news:
Bonjour,
J'aimerais savoir si je peux inclure l'exécution d'un "pivot table" (tableau
croisé dynamique) dans une macro ? Si oui, y a t il des particularités?
Car j'ai essayé et quand j'exécute ma macro, j'ai un bug et le pivot est vide.
Le msg d'erreur dit "Impossible de lire la propriété PivotFields de la
classe PivotTable.

Quelqu'un peut m'aider???
Merci





Avatar
michdenis
Bonjour Sofia,

Afin de pouvoir t'aider, serait-ce possible que tu puisses publier ton classeur : Ton tableau des données + le tableau croisé
dynamique que tu veux obtenir (celui que tu as fait à la main pendant que l'enregistreur macro écrivait le code que tu as publié, tu
peux supprimer tout le reste) à cette adresse : http://cjoint.com/

Si besoin, compresse ton fichier car le serveur n'accepte que de tout petit fichier.
Tu peux toujours l'envoyer directement dans ma bal si tu désires.


Salutations!



"Sofia" a écrit dans le message de news:
Hello Michdenis,

C'est ce que j'ai fais: j'ai enregistré ma macro pendant que je faisait mon
pivot.

Le pb survient au moment de l'éxécution de la macro : il fait tout bien sauf
que y a aucune donnée dans le pivot et j'ai un msg d'erreur (cf plus bas).

J'avoue ne rien connaitre à VBA donc le code pour moi c'est du charabia :s
Peut être qu'avec le code, quelqu'un pourra m'en dire plus....
Code VBA:
Cells.Select
Range("W1").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C28").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("AE"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Portfolio"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields
RowFields:= _
Array("AE", "Données"), ColumnFields:="Portfolio"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"LocalInvoice_CreditTotal")
.Orientation = xlDataField
.Caption = "Somme de LocalInvoice_CreditTotal"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"LocalInvoice_CreditTotal")
.Orientation = xlDataField
.Caption = "Nombre de LocalInvoice_CreditTotal"
End With
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False
ActiveWindow.SmallScroll Down:=-9
Columns("A:A").ColumnWidth = 22.71
Columns("B:B").ColumnWidth = 20.29
ActiveWindow.SmallScroll Down:=0
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Portfolio")
.PivotItems("(vide)").Visible = False
End With
Columns("B:B").ColumnWidth = 17.71
Range("G6").Select
ActiveCell.FormulaR1C1 = "Prix"
Range("G7").Select
ActiveCell.FormulaR1C1 = "Assigned"
Range("G8").Select
ActiveCell.FormulaR1C1 = "Unassigned"
Range("G9").Select
ActiveCell.FormulaR1C1 = "Editorial"
Range("G14").Select
ActiveCell.FormulaR1C1 = "Volume"
Range("G15").Select
ActiveCell.FormulaR1C1 = "Assigned"
Range("G16").Select
ActiveCell.FormulaR1C1 = "Unassigned"
Range("G17").Select
ActiveCell.FormulaR1C1 = "Editorial"
Range("H14").Select
ActiveCell.FormulaR1C1 = "RF"
Range("I14").Select
ActiveCell.FormulaR1C1 = "RM"
Range("I6").Select
ActiveCell.FormulaR1C1 = "RM"
Range("H6").Select
ActiveCell.FormulaR1C1 = "RF"
Range("H7").Select
End Sub

Si quelqu'un y comprends quelque chose, Aide bien venue ;o) MERCI


Bonjour Sofia,

Je te suggère d'utiliser l'enregistreur macro d'Excel pendant que tu crées ton tableau croisé dynamique. Le code VBA afférent au
tableau croisé dynamique est très exhaustif et cela demande un peu de pratiques avant d'y aller manuellement. Tu pourras par la
suite, raffiner la syntaxe le cas échéant. Pour cette dernière tâche, tu peux même publier ton code ici... pour avoir de l'aide !


Salutations!



"Sofia" a écrit dans le message de news:
Bonjour,
J'aimerais savoir si je peux inclure l'exécution d'un "pivot table" (tableau
croisé dynamique) dans une macro ? Si oui, y a t il des particularités?
Car j'ai essayé et quand j'exécute ma macro, j'ai un bug et le pivot est vide.
Le msg d'erreur dit "Impossible de lire la propriété PivotFields de la
classe PivotTable.

Quelqu'un peut m'aider???
Merci