Création tableau croisé dynamique VBA
Bonjour à tous,
Je souhaite créer un tableau croisé dynamique avec :
- pour filtre "LIBELLE_TYPE"
- pour étiquette de colonnes "magasin"
- pour étiquette de lignes "vérif"
- pour valeurs "vérif" renommé en "nombre de magasins" et "vérif" renommé "%" en %du total de la colonne
- mon tableau ne doit pas afficher le total des lignes
Mon problème est que une fois ma macro lancée et terminée mon tableau dynamique n'a pas prit en compte l'étiquette de lignes et supprime le total des colonnes au lieu des lignes.
Voici mon code :
Sub Macro1()
Sheets.Add After:=Sheets(Sheets.Count)
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Feuil4!R1C1:R100000C42", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Feuil6!R1C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion14
Sheets("Feuil6").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Verif")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Magasin")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"LIBELLE_TYPE")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Verif"), _
"Nombre de Verif", xlCount
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Verif"), _
"Nombre de Verif2", xlCount
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Nombre de Verif").Caption = "Nombre de magasins"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Nombre de Verif2")
.Caption = "%"
.Calculation = xlPercentOfColumn
.NumberFormat = "0,00%"
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("LIBELLE_TYPE" _
).EnableMultiplePageItems = True
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Magasin")
.PivotItems("(blank)").Visible = False
End With
Range("A4").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").ColumnGrand = False
End Sub
Pouvez-vous me dire où est mon erreur ?
De plus je souhaiterai réorganiser mes étiquettes de lignes.
Merci pour votre aide.
Bonjour
Au moins 95% des forumeurs maîtrisant les TCD te diront qu'on ne crée pas un TCD par VBA.
On le crée et le peaufine manuellement et on peut par VBA en modifier la source
Bonjour,
Merci de joindre un fichier à ta demande pour une aide adaptée du forum.
Cdlt.
Bonjour,
J'ai trouvé mon erreur.
Pour créer un tableau croisé dynamique en VBA il faut écrire la ligne des "valeurs" avant la création des "étiquettes".
Cette ligne
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields("AV/AP"), _
"Nombre de AV/AP", xlCount
Avant cette ligne
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("AV/AP")
.Orientation = xlRowField
.Position = 1
End With
Bonne journée :)
Inès