Une macro qui génère plusieurs TCD avec même liste de champs

Bonjour à tous

Voila, je ne m'y connais pas grand chose du tout en VBA sous Excel mais j'aimerais bien créer 8 TCD sur plusieurs feuilles dans le même fichier à partir d'une base de données avec une même liste des champs:

Filtre du rapport: code section

étiquettes de colonnes: rubrique budgétaire

étiquettes de lignes: suivi budgétaire

valeur: somme des soldes réels

A ce jour, je crée tout manuellement et c'est vraiment pénible Alors si vous pouvez me donner un coup de main ça sera génial!

Merci d'avance

32recap-vba.xlsx (245.21 Ko)

Bonjour,

Un exemple avec la création la création de 8 feuilles comportant 8 TCDs identiques.

La mise en forme n'est pas (encore effectuée.

A te relire

Option Explicit
Public Sub Consolidation()
Dim WsSource As Worksheet, WsRésultat As Worksheet, ws As Worksheet
Dim Derligne As Long, i As Long
Dim Plage As Range, PTCache As PivotCache, PT As PivotTable

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Set WsSource = Worksheets("Base de données")

    On Error Resume Next
        For Each ws In ActiveWorkbook.Worksheets
            If ws.Name <> WsSource.Name Then ws.Delete
        Next
    On Error GoTo 0

    Application.DisplayAlerts = True

    For i = 1 To 8
        With WsSource
            Derligne = .Range("A" & Rows.Count).End(xlUp).Row
            Set Plage = .Range("A1:F" & Derligne)

            Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
                SourceData:=Plage)

            Worksheets.Add after:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = "TCD" & i
            Set WsRésultat = ActiveSheet

            Set PT = PTCache.CreatePivotTable(TableDestination:=WsRésultat.Range("A1"), _
            TableName:="TCD_" & i)

            With PT
                With .PivotFields("Code Section")
                    .Orientation = xlPageField
                End With
                With .PivotFields("Suivi budgétaire")
                    .Orientation = xlRowField
                End With
                With .PivotFields("Rubrique budgétaire")
                    .Orientation = xlColumnField
                End With
                With .PivotFields("Solde Réel")
                    .Orientation = xlDataField
                    .Function = xlSum
                End With
            End With
        End With
    Next

    Set WsSource = Nothing: Set WsRésultat = Nothing: Set Plage = Nothing

End Sub
43recap-vba.xlsm (253.26 Ko)

Bonjour Jean-Eric,

Merci de te préoccuper de mon problème!

Effectivement pour la création de 8 TCD avec la même liste des champs ta macro tourne à merveille!

Une dernière chose, il me faut le code qui permet de faire un tri sur le filtre du rapport "Code section". Par exemple, pour TCD1, je voudrais choisir les codes sections qui commence par 110, puis pour le 2ème TCD je choisirais ceux qui commencent par 222EIN...

j'espère ne pas abuser, tu as déjà fait beaucoup

Re,

A tester et adapter.

Ctrl+w pour lancer la procédure.

ALT F11 pour afficher l'éditeur VBA et voir les codes.

56recap-vba.xlsm (258.82 Ko)

Je te remercie encore une fois de ton aide, Jean-Eric!

J'ai testé ta 2ème macro, elle est impeccable! Par contre j'ai une autre petite question...

Comme je dois traiter tous les mois un fichier Excel avec les 8 TCDs (tu ne peux pas imaginer comment ton code m'a simplifié la vie!), j'ai copié ta macro pour travailler avec d'autres bases de données mais elle n'a pas marché.

J'ai eu un message d'erreur "Erreur d'exécution 1004 - Cette commande requiert au moins deux lignes de données. Essayez la méthode suivante: Si vous utilisez un filtre avancé, sélectionnez un plage de cellules qui contient au moins deux lignes de données. Puis cliquez à nouveau sur la commande Filtre élaboré" puis le débugger a mis la ligne "Set PT = PTCache.CreatePivotTable(TableDestination:=WsRésultat.Range("A1"), TableName:="TCD_" & i)" en jaune.

Que faire STP?

je te souhaite une bonne semaine!

J'ai trouvé la solution!!!

J'ai changé la plage de données et ça marche nickel!!! J'en suis trop contente MDR

Rechercher des sujets similaires à "macro qui genere tcd meme liste champs"