VBA - Création d'un tableau croisé dynamique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Mappie

XLDnaute Junior
Bonjour,

A partir d'une base de données de taille variable, je souhaiterais automatiser, par une macro, la création d'un TCD avec les mêmes champs et avec un champ calculé.

J'ai fait l'enregistrement mais lorsque j'appelle la macro une nouvelle fois, j'ai une erreur d'exécution:

PHP:
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Bdd!R1C1:R5C4", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Feuil9!R3C1", TableName:="Tableau croisé dynamique27", _
        DefaultVersion:=xlPivotTableVersion14

Je ne sais pas comment résoudre le problème qui doit se trouver, je pense, au niveau du nom du TCD, de la définition des variables et de la feuille de destination.

Je vous remercie par avance pour votre aide
 

Pièces jointes

Re : VBA - Création d'un tableau croisé dynamique

Bonjour à tous,

Après avoir mis les données sous forme de Tableau et l'avoir nommé "Tablo" :

VB:
Sub Création_TCD()
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "TCD" & Format(Sheets.Count - 1, "00")
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
             "Tablo", Version:=xlPivotTableVersion15).CreatePivotTable _
              TableDestination:=ActiveSheet.Cells(4, 2), TableName:="TCD", _
              DefaultVersion:=xlPivotTableVersion15
    With ActiveSheet.PivotTables("TCD").PivotFields("Nom")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("TCD").CompactLayoutRowHeader = "Noms"
    With ActiveSheet.PivotTables("TCD").PivotFields("Ville")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet. _
               PivotTables("TCD").PivotFields("Prix A"), _
               "Somme de Prix A", xlSum
    With ActiveSheet.PivotTables("TCD").PivotFields( _
         "Somme de Prix A")
        .Caption = " Prix A"
        .NumberFormat = "# ##0,00"
    End With
    ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet. _
                PivotTables("TCD").PivotFields("Prix B"), _
                "Somme de Prix B", xlSum
    With ActiveSheet.PivotTables("TCD").PivotFields( _
         "Somme de Prix B")
        .Caption = " Prix B"
        .NumberFormat = "# ##0,00"
    End With
    ActiveSheet.PivotTables("TCD").CalculatedFields.Add _
            "Prix C", "='Prix A' +'Prix B'", True
    ActiveSheet.PivotTables("TCD").PivotFields("Prix C"). _
            Orientation = xlDataField
    ActiveSheet.PivotTables("TCD").PivotFields( _
            "Somme de Prix C").Caption = " Prix C"
End Sub

A+ à tous
 

Pièces jointes

Re : VBA - Création d'un tableau croisé dynamique

Bonjour JCGL,

Merci pour votre aide, cela correspond à ce que je recherche!

Est-il possible de mettre sous vba la conversion et de nommer le tableau en macro?

J'ai trouvé comment nommer la plage de cellules mais je ne sais pas comment convertir en tableau.

Je vous remercie par avance.

Bonne journée
 
Re : VBA - Création d'un tableau croisé dynamique

Bonjour à tous,

Rajoute ces lignes en début de code :

VB:
Sub Création_TCD()
    Dim DerL&
    DerL = Sheet1.Range("A" & Rows.Count).End(xlUp).Row


    ActiveSheet.ListObjects("Tablo").Unlist
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$" & DerL), , xlYes).Name = "Tablo"
    ActiveSheet.ListObjects("Tablo").TableStyle = "TableStyleLight15"


    Sheets.Add After:=Sheets(Sheets.Count)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
658
Réponses
69
Affichages
9 K
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Retour