[VBA/Tableau Croisé Dynamique] créer plusieurs TCD à partir d'une même source da
Davesoul
Messages postés2Date d'inscriptionvendredi 14 mai 2010StatutMembreDernière intervention14 mai 2010
-
14 mai 2010 à 12:08
Davesoul
Messages postés2Date d'inscriptionvendredi 14 mai 2010StatutMembreDernière intervention14 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Davesoul
Messages postés2Date d'inscriptionvendredi 14 mai 2010StatutMembreDernière intervention14 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.