Tcd par macro
bonjour le forum,
J'essai de créer un TCD avec une macro en l'enregistrant.
Je supprime le résultat et relance la macro. Elle ne fonctionne pas.
Message d'erreur suivant : "erreur d’exécution '5' : argument ou appel de procédure incorrect"
Pouvez vous m'aider ?
Le résultat attendu est sur les feuilles TCD.
Merci
ety
Pj : fichier
Bonjour,
essaie ainsi :
Option Explicit
Public Sub CreatePivotTables()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim rngPT As Range
Dim PTCache As PivotCache
Dim pt As PivotTable
Application.ScreenUpdating = False
'------------------------------------------------------------
Set wb = ActiveWorkbook
'------------------------------------------------------------
'PT_1
Set wsData = wb.Worksheets("BAL1BAL2")
Set rngPT = wsData.ListObjects(1).Range
Set wsPT = wb.Worksheets("TCD BAL1BAL2")
On Error Resume Next
wsPT.PivotTables(1).TableRange2.Clear
On Error GoTo 0
'------------------------------------------------------------
Set PTCache = wb.PivotCaches.Create(xlDatabase, rngPT)
Set pt = PTCache.CreatePivotTable(wsPT.Cells(3, 1), "PT_1")
With pt
.ManualUpdate = True
.AddFields RowFields:="Compte"
With .PivotFields("CUMUL")
.Orientation = xlDataField
.Position = 1
.Function = xlCount
.NumberFormat = "#,##0"
.Caption = "NB CUMUL"
End With
With .PivotFields("CUMUL")
.Orientation = xlDataField
.Position = 2
.Function = xlSum
.NumberFormat = "#,##0.00;[Red](#,##0.00;"
.Caption = "CUMUL "
End With
.RowAxisLayout xlTabularRow
.TableStyle2 = "PivotStyleMedium2"
.ManualUpdate = False
End With
'------------------------------------------------------------
'PT_2
Set wsData = wb.Worksheets("TOTAL")
Set rngPT = wsData.ListObjects(1).Range
Set wsPT = wb.Worksheets("TCD TOTAL")
On Error Resume Next
wsPT.PivotTables(1).TableRange2.Clear
On Error GoTo 0
'------------------------------------------------------------
Set PTCache = wb.PivotCaches.Create(xlDatabase, rngPT)
Set pt = PTCache.CreatePivotTable(wsPT.Cells(3, 1), "PT_2")
With pt
.ManualUpdate = True
.AddFields RowFields:="Compte"
With .PivotFields("CUMUL")
.Orientation = xlDataField
.Position = 1
.Function = xlCount
.NumberFormat = "#,##0"
.Caption = "NB CUMUL"
End With
With .PivotFields("CUMUL")
.Orientation = xlDataField
.Position = 2
.Function = xlSum
.NumberFormat = "#,##0.00;[Red](#,##0.00;"
.Caption = "CUMUL "
End With
.RowAxisLayout xlTabularRow
.TableStyle2 = "PivotStyleMedium2"
.ManualUpdate = False
End With
'------------------------------------------------------------
Set pt = Nothing
Set PTCache = Nothing
Set rngPT = Nothing
Set wsPT = Nothing: Set wsData = Nothing
Set wb = Nothing
End Subbonjour
salut Jean-Eric
à quoi ça sert de recréer toujours un même TCD ?
jamais vu ce besoin nulle part.
Bpnjour,
@jmd,
A priori les feuilles TOTAL et BAL1BAL2, sources tes TCDs, sont différentes.
Cdlt.
salut Jean-Eric
je fais aussi des TCD à partir de balances comptables exportées de progiciels
l'astuce consiste à créer un miroir de l'export, puis à faire un TCD basé sur le miroir et non directement sur l'export. Ensuite, dans le TCD un clic droit "Actualiser" suffit
un miroir est tout simplement un fichier rempli de =
(copier l'origiginal exporté, collage avec liaison dans Miroir)
le miroir est en permanence l'exacte copie de tout nouvel export
(la zone plein de = doit être assez vaste pour couvrir les besoins de janvier à décembre ou plus selon l'avenir de l'entreprise)