Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

kingfadhel

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

Bonjour JCGL,
Fonctionnel sur Excel 2013, il faut changer "xlPivotTableVersion15" par "xlPivotTableVersion12" pour Excel 2007 comme je l'utilise.
à part ça c'est nickel.
 

marik06

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

Vous êtes tous formidable.
Ça marche car j'utilise cette macro sur du 2010 donc j'ai modifié "xlPivotTableVersion15" par xlPivotTableVersion14.
Mille mercis
Bon WE
Marik
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…