Bonjour,
Je souhaite réaliser un tableau Croisé Dynamique à partir d'un tableau source, auquel le nom "DATA" est attribué, dont le nombre de colonnes peut varier selon les cas. J'utilise donc une boucle pour parcourir ces colonnes.
En ligne du tableau croisé, il y a déjà un champ (3ème colonne de DATA, insérée par une précédente macro en tant que ligne tableau croisé).
L'étape suivante (sans succès) consisterait à mettre en colonnes du tableau croisé (sous forme de sommes), les colonnes du tableau DATA (cf. tableau qui a servi à construire ce dernier), la boucle doit aller de la 4ème à la dernière colonne de DATA.
J'ai donc une boucle qui parcourt toutes les colonnes, à chaque itération, j'enregistre sous le nom de "titre_champ" le titre de la colonne dans DATA, et je veux utiliser ce paramètre (chaine de caractères) pour choisir le champ à insérer dans le tableau croisé (ça, ça marche) ET aussi pour que ce soit donc le titre de cette colonne dans le TCD (c'est là que ça ne marche pas).
Voici la partie du code concernée (la boucle a été mise en commentaire pour l'instant):
(la feuille ou il y a le tableau croisé s'appelle "TCD", et letableau croisé dynamique lui même s'appelle "TCD" aussi).
L'erreur renvoyée est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub Remplir_col_TCD() Dim titre_Champ As String (...) 'BOUCLE POUR COMPLETER CHAQUE CHAMP DE DATA DANS LE TCD Sheets("TCD").Select 'For Indice_Champ = 4 'To NbColData 'ENREGISTREMENT DE TITRE_CHAMP (en utilisant la cellule A1) Sheets("feuil1").Select Range("A1").Value = "=Index(Data, 1," & Indice_Champ & ")" titre_Champ = Range("A1").Value 'METTRE COLONNE DANS LE TABLEAU CROISE Sheets("TCD").Select ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet.PivotTables("TCD"). _ PivotFields(titre_Champ), titre_Champ, xlSum 'Next Indice_Champ End Sub
"erreur d'execution 1004:
Erreur définie par l'application ou par l'objet"
Les lignes surlignées par le débogage sont celles là
Il y 2 fois "titre_champ" dans ces lignes, mais si je remplace le deuxième par n'importe quoi entre guillemets, ça marche, c'est donc le deuxième qui pose problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet.PivotTables("TCD"). _ PivotFields(titre_Champ), titre_Champ, xlSum
ex de code qui marche:
mais avec cet exemple, dans la boucle, toutes les colonnes du tableau croisé auraient alors le nom ("test") donc ça ne va pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet.PivotTables("TCD"). _ PivotFields(titre_Champ), "test", xlSum
Avez-vous une idée de solution?
Merci d'avance pour votre aide
Partager