Amélioration Code VBA-TCD à la chaine
Bonjour,
je suis en train de réaliser plusieurs TCD les uns à la suite des autres et je souhaiterais :
1-Améliorer mon code car il s'agit d'un enregistrement Macro que j'ai modifié afin d'obtenir mes résultats et il n'est pas optimal
2- Ma macro se plante lorsque je souhaite créé un élément calculé qui correspond à la différence entre N et N-1.
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Exo Audit"). _
CalculatedItems.Add "Var", "=N -'N-1'", True
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Exo Audit")
.PivotItems("Var").Visible = False
End With
Je ne sais comment résoudre mon soucI sachant que j'ai encore 6 TCD à générer àprès.
Merci d'avance
Ci-dessous le code entier :
Sub TCD()
'
' TCD Macro
'
'Sélection MABASE et procède à la création des TCD à partir du TCD Bilan Synthé
Application.ScreenUpdating = False
Sheets("BASE").Select
Range("MABASE[[#Headers],[CodeJournal]]").Select
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "BILAN SYNTHE"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"MABASE", Version:=6).CreatePivotTable TableDestination:=ActiveSheet.Cells(3, 1), _
TableName:="Tableau croisé dynamique1", DefaultVersion:=6
Sheets("BILAN SYNTHE").Select
Cells(3, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
Sheets("BILAN SYNTHE").Select
With ActiveWorkbook.Sheets("BILAN SYNTHE").Tab
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.599993896298105
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Red1")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("2-NIV2")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("2-NIV1")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-BRUT/AMT")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-CR-ACTIF-PASSIF")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Exo Audit")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Exo Audit"). _
CalculatedItems.Add "Var", "=N -'N-1'", True
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Exo Audit")
.PivotItems("Var").Visible = False
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("SOLDE"), "Somme de SOLDE" _
, xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique1").RowAxisLayout xlTabularRow
Cells.Select
With Selection.Font
.Name = "Candara"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Cells.EntireColumn.AutoFit
Selection.NumberFormat = "#,##0.00"
Selection.NumberFormat = "#,##0.0"
Selection.NumberFormat = "#,##0"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-CR-ACTIF-PASSIF")
.PivotItems("COMPTE RESULTAT").Visible = False
End With
Range("P4").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").RowGrand = False
Range("N4").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
.ColumnGrand = True
.RowGrand = False
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _
"'3-CR-ACTIF-PASSIF'[All;Total]", xlDataAndLabel, True
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
ActiveWindow.DisplayGridlines = False
Sheets("BILAN SYNTHE").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("3-BRUT/AMT"). _
PivotItems("BRUT").Position = 1
Sheets("BILAN SYNTHE").Copy Before:=Sheets(6)
Sheets("BILAN SYNTHE (2)").Select
Sheets("BILAN SYNTHE (2)").Name = "BILAN DETAIL"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _
"'2-NIV1'[All]", xlLabelOnly, True
ActiveWindow.SmallScroll Down:=-15
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-REF.COMPTE")
.Orientation = xlRowField
.Position = 4
End With
Sheets("BILAN SYNTHE").Select
Sheets("BILAN SYNTHE").Copy Before:=Sheets(7)
Sheets("BILAN SYNTHE (2)").Select
Sheets("BILAN SYNTHE (2)").Name = "CR SYNTHE "
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-CR-ACTIF-PASSIF")
.PivotItems("ACTIF").Visible = False
.PivotItems("COMPTE RESULTAT").Visible = True
.PivotItems("PASSIF").Visible = False
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"NATURE JAL")
.Orientation = xlPageField
.Position = 1
End With
Sheets("CR SYNTHE ").Select
Sheets("CR SYNTHE ").Copy Before:=Sheets(8)
Sheets("CR SYNTHE (2)").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"3-REF.COMPTE")
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Red2")
.Orientation = xlRowField
.Position = 4
End With
Sheets("CR SYNTHE (2)").Name = "CR DETAIL"
Cells.Select
Cells.EntireColumn.AutoFit
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _
"Red2[All;Total]", xlDataAndLabel, True
With Selection.Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Application.ScreenUpdating = True
End Sub
Bonjour,
Merci de joindre un fichier à ta demande pour une aide adaptée du forum.
Cdlt.
Ci joint le classeur.
J'ai obligé de supprimer le résultat afin de pouvoir obtenir les 1.5Mo pour le déposer sur la plateforme.
J'ai supprimé du code l'ajout des éléments calculés Var =N-N-1 du champ ExoAudit car il plante la macro (trop de données à traiter, impossible de lancer le traitement).
Merci d'avance