Tableau croisé dynamique à l'aide d'une macro

marik06

XLDnaute Nouveau
Bonsoir à toutes et à tous,
J'aimerais pouvoir générer un tableau croisé dynamique à l'aide d'une macro.
Dans l'onglet 1 du fichier joint, il y a le tableau à sélectionner (qui peut être plus petit ou plus grand selon les mois) et dans l'onglet 2, il y a le TCD à générer.
Ne connaissant pas le VBA, je me disais que je pourrais enregistrer une macro en effectuant pas à pas les actions à faire pour obtenir le TCD.
J'ai bien pu faire une macro. Ensuite, j'ai supprimé l'onglet 2 et j'ai relancé la macro. Excel m'a indiqué une erreur d'exécution 5 avec argument ou appel de procédure incorrect.
Pouvez-vous m'aider ?
Avez-vous besoin du texte de la macro générée ?
Merci d'avance
 

Pièces jointes

  • Classeur2.xlsx
    13.8 KB · Affichages: 67
  • Classeur2.xlsx
    13.8 KB · Affichages: 84
  • Classeur2.xlsx
    13.8 KB · Affichages: 80

JCGL

XLDnaute Barbatruc
Re : Tableau croisé dynamique à l'aide d'une macro

Bonjour à tous,

Un essai avec :

VB:
Option Explicit


Sub Création_TCD()
    Application.DisplayAlerts = 0
    Sheets("TCD").Delete
    Application.DisplayAlerts = 1
    Sheets.Add after:=Sheets("Data")
    ActiveSheet.Name = "TCD"
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
             "Tablo_TCD", Version:=xlPivotTableVersion15).CreatePivotTable _
             TableDestination:="TCD!R2C2", TableName:="TCD1", DefaultVersion:=xlPivotTableVersion15
    With ActiveSheet.PivotTables("TCD1")
        With .PivotFields("Nom")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields("Sous marque")
            .Orientation = xlRowField
            .Position = 2
        End With
        With .PivotFields("date")
            .Orientation = xlColumnField
            .Position = 1
        End With
        .TableStyle2 = "PivotStyleMedium4"
        .PivotFields("Nom").LayoutForm = xlTabular
        .AddDataField ActiveSheet.PivotTables("TCD1").PivotFields("Quantité"), " Quantité", xlSum
        .CompactLayoutColumnHeader = "Date "
        .CompactLayoutRowHeader = "Noms"
    End With
End Sub

A+ à tous
 

Pièces jointes

  • JC Création_TCD.xlsm
    33 KB · Affichages: 98
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 256
Membres
102 839
dernier inscrit
Tougtoug