Déclaration de plusieurs variables similaires par une boucle For...Next

koobcam Messages postés 6 Date d'inscription vendredi 14 janvier 2011 Statut Membre Dernière intervention 25 mars 2011 - 14 janv. 2011 à 14:02
koobcam Messages postés 6 Date d'inscription vendredi 14 janvier 2011 Statut Membre Dernière intervention 25 mars 2011 - 15 janv. 2011 à 09:43
Bonjour à tous,

Dans le cadre de mon travail je suis amené à créer des macros VBA de mise en forme sur Excel. Je n'y arrive pas trop mal pour le moment, mais je suis tombé sur un os. Voilà mon souci :

Visualisez une plage de données dans mon tableur Excel à partir de laquelle je vais créer un Tableau croisé dynamique (TCD) :

│Col 1│Col 2│Col 3│...│Col j│...│Col c│
Ligne 1
Ligne 2
Ligne 3
Ligne ...
Ligne i
Ligne ...
Ligne l

c et l sont déclarés comme "Integer" , me permettent de définir le numéro de dernière colonne et de dernière ligne de ma plage de données.

Ils sont obtenus de la façon suivante (la plage de données commençant sur la cellule A1) :

c = ActiveSheet.Range("A1").End(xlToRight).Column
l = ActiveSheet.Range("A65536").End(xlUp).Row

Je voudrais nommer l'ensemble des étiquettes de colonnes, positionnées sur la ligne 1 d'Excel par une variable "C(j)" avec une boucle For...next et leur affecter la valeur de l'étiquette afin de l'utiliser dans construction de mon TCD.

Voici donc le début du code que je n'arrive pas à faire marcher :

Dim c As Integer
Dim l As Integer
Dim j As Integer

Dim "c" & j As String '>> début du problème

c = ActiveSheet.Range("A1").End(xlToRight).Column
l = ActiveSheet.Range("A65536").End(xlUp).Row

For j = 1 To c

"c" & j = Sheets("FeuilleDonnées").Cells(1, j).Value

Next

'J'utiliserais ensuite à ma guise c1, c2, c3 ... 'pour les utiliser dans mon TCD. Par exemple :

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields(c3)
.Orientation = xlDataField
.Position = 3
End With

Merci pour votre aide précieuse !

1 réponse

koobcam Messages postés 6 Date d'inscription vendredi 14 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
15 janv. 2011 à 09:43
J'ai eu la réponse à ma question.
Le post peut être classé comme résolu.

******************************
Voici l'élément de réponse :
******************************

Bonjour,

C'est une variable tableau dont tu as besoin, seulement si la taille est variable il faut la mettre avec un 'redim' :

dim col() as string, c as long
c = ActiveSheet.Range("A1").End(xlToRight).Column
redim col(c)

'ensuite tu utilises l'indice, en reprenant ton code en exemple :
For j = 1 To c
col(j) = Sheets("FeuilleDonnées").Cells(1, j).Value
Next

....PivotFields(col(3))
0
Rejoignez-nous