[VBA/Tableau Croisé Dynamique] créer plusieurs TCD à partir d'une même source da

Davesoul Messages postés 2 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 14 mai 2010 - 14 mai 2010 à 12:08
Davesoul Messages postés 2 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 14 mai 2010 - 14 mai 2010 à 14:33
Bonjour,
je m'excuse d'avance si le sujet a déjà été traité ( mais cela m'étonnerais, vu que cela fait 3 jours que je cherche en vain un peu partout).
voilà.
j'aimerais développer ( un bien grand mot) une macro qui à partir d'une base de donnée constituée sur un fichier excel ( je précise xl2003) génèrerait 5 tableaux Croisés Dynamiques sur dans un autre fichier et tous les 5 sur la même feuille
( ces tableaux ne font que 2 lignes donc pas de soucis de place).
j'ai utilisé l'enregistreur de macro mais impossible relancer ce qui est enregistré.

je fait un copié/collé de "mon" malheureux code.
si vous pouviez me donner un coup de main ce serait royal

Merci d'avance
---------
Workbooks.Add
     ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "[macro_0405.xls]controle!R1C1:R828C20" ).CreatePivotTable TableDestination:= _
        "", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique1" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique1" ).AddFields RowFields:= _
        "contrôle_famille", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
        "contrôle_famille" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("A8" ).Select
    ActiveWorkbook.Worksheets("Classeur2" ).PivotTables("Tableau croisé dynamique1" ). _
        PivotCache.CreatePivotTable TableDestination:="[Classeur2]Feuil1!R8C1", _
        TableName:="Tableau croisé dynamique4", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique4" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique4" ).AddFields RowFields:= _
        "contrôle_thême", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique4" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique4" ).PivotFields( _
        "contrôle_thême" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("A13" ).Select
    ActiveWorkbook.Worksheets("Feuil1" ).PivotTables("Tableau croisé dynamique1" ). _
        PivotCache.CreatePivotTable TableDestination:="[Classeur2]Feuil1!R13C1", _
        TableName:="Tableau croisé dynamique5", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique5" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique5" ).AddFields RowFields:= _
        "contrôle_sous-thême", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique5" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    Range("A15" ).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique5" ).PivotFields( _
        "contrôle_sous-thême" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("A18" ).Select
    ActiveWorkbook.Worksheets("Feuil1" ).PivotTables("Tableau croisé dynamique3" ). _
        PivotCache.CreatePivotTable TableDestination:="[Classeur2]Feuil1!R18C1", _
        TableName:="Tableau croisé dynamique6", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique6" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique6" ).AddFields RowFields:= _
        "contrôle_codefin", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique6" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    Range("A21" ).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique6" ).PivotFields( _
        "contrôle_codefin" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("A23" ).Select
    ActiveWorkbook.Worksheets("Feuil1" ).PivotTables("Tableau croisé dynamique3" ). _
        PivotCache.CreatePivotTable TableDestination:="[Classeur2]Feuil1!R23C1", _
        TableName:="Tableau croisé dynamique7", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique7" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique7" ).AddFields RowFields:= _
        "contrôle_cause", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique7" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique7" ).PivotFields( _
        "contrôle_cause" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("A28" ).Select
    ActiveWorkbook.Worksheets("Feuil1" ).PivotTables("Tableau croisé dynamique3" ). _
        PivotCache.CreatePivotTable TableDestination:="[Classeur2]Feuil1!R28C1", _
        TableName:="Tableau croisé dynamique8", DefaultVersion:= _
        xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique8" ).ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique8" ).AddFields RowFields:= _
        "contrôle_sous-cause", ColumnFields:="Créateur"
    With ActiveSheet.PivotTables("Tableau croisé dynamique8" ).PivotFields("ID" )
        .Orientation = xlDataField
        .Caption = "Nombre de ID"
        .Function = xlCount
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique8" ).PivotFields( _
        "contrôle_sous-cause" )
        .PivotItems("ok" ).Visible = False
        .PivotItems("#N/A" ).Visible = False
    End With
    Range("E1" ).Select
    ActiveCell.FormulaR1C1 = "Rapports de Tableaux croisés dynamique"
    Range("D36" ).Select
End Sub
 

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mai 2010 à 13:19
Salut
Pas eu le courage de tout lire.
Concernant l'enregistrement de macro pour les tableaux croisés dynamiques, il est important de lancer l'enregistrement AVANT de commencer à créer un tableau croisé dynamique.
Si un tel tableau existe déjà sur ta feuille, ma macro n'enregistrera que les modifs et pas la structure initiale.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Davesoul Messages postés 2 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 14 mai 2010
14 mai 2010 à 14:33
Bonjour Jack
d'abord merci d'avoir pris le temps de voir mon problème.
Pour te répondre, je te confirme que j'ai lancé l'enregistreur avant de faire mes TCD (tableau croisé dynamique pour ceux qui n'aiment pas l'abréviation). je pense que ce qui t'a induis en erreur c'est le ""[macro_0405.xls]controle!R1C1:R828C20". mais pour être plus clair, voila comment je compte procéder:
1- je lance une 1ere macro qui va me constituer une base de données sur mon fichier "macro_0405" dans l'onglet "controle"
2- je compte lancer une autre macro ( et c'est là le problème) qui va générer 5 TCD dans un autre fichier mais sur un même onglet (feuil1). après dans ce même fichier je génèrerais des graphiques, stats... sur les autres onglets mais bon pour l'instant j'en suis pas là.

le but est de pouvoir lancer des TCD dans un fichier qui sera envoyés à divers personnes sans qu'elles aient accès au fichier où sont stockées les macros.

Si je ne suis pas clair, n'hésitez pas

Encore merci de prendre le temps de m'aider
0
Rejoignez-nous