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 Sub

bonjour

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)

Rechercher des sujets similaires à "tcd macro"