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
Merci d'avance
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
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
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.
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