Boucles imbriquées
Résolu
Bulle4805
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Bulle4805 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bulle4805 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutante en VBA et je souhaiterais créer des boucles imbriquées. J'ai essayé de chercher des solutions sur internet, mais je n'ai pas trouvé !
Je vous explique mon problème.
En fait, j'ai plusieurs fichiers Excel de même structure pour différentes années. Avec différents paramètres qui changent :
- l'année : qui va de 2001 à 2004
- les lettres : qui vont de A à G
- et le nombre de tableaux par lettre : de 1 à 4
Ce qui nous donne en gros :
fichier_A1_2001 fichier _A1_2002 fichier_A1_2003 fichier_A1_2004
fichier_A2_2001 ... ... ...
fichier_A3_2001 ... ... ...
fichier_A4_2001 ...
fichier_B1_2001 ...
fichier_B2_2001 ...
...
fichier_G4_2001 ... fichier_G4_2004
Ces fichiers ayant la même structure, je voudrais agir sur chacun d'eux en même temps.
J'ai donc voulu créer une variable qui prend comme valeur les différentes valeurs possibles des différents fichiers (pour pouvoir par la suite, ouvrir tous ces fichiers et agir sur eux). J'ai commencé par un petit échantillon (avec 9 valeurs sans variation de la date).
Sub OuvrirClasseur()
Dim strFichier(1 To 9) As String 'nom du fichier
Dim tableau(1 To 3) As String
tableau(1) = "A"
tableau(2) = "B"
tableau(3) = "C"
For m = 1 To 9
For i = 1 To 3 Step 1
For j = 1 To 3 Step 1
strFichier(m) = "fichier_" & tableau(i) & j & "_2004.xls"
Next
Next
Next
'Vérification de la valeur prise par strFichier
Range("A1") = strFichier(1)
Range("A2") = strFichier(2)
Range("A3") = strFichier(3)
Range("A4") = strFichier(4)
Range("A5") = strFichier(5)
Range("A6") = strFichier(6)
Range("A7") = strFichier(7)
Range("A8") = strFichier(8)
Range("A9") = strFichier(9)
End Sub
Ce qui me retourne dans les différentes valeurs de strFichier(m), la dernière valeur de la boucle, soit : fichier_C_2004.xls
Pourriez-vous m'en expliquer la raison et me dire comment je pourrais créer pour chaque variable une valeur différente prise ?
Merci d'avance !
Je suis débutante en VBA et je souhaiterais créer des boucles imbriquées. J'ai essayé de chercher des solutions sur internet, mais je n'ai pas trouvé !
Je vous explique mon problème.
En fait, j'ai plusieurs fichiers Excel de même structure pour différentes années. Avec différents paramètres qui changent :
- l'année : qui va de 2001 à 2004
- les lettres : qui vont de A à G
- et le nombre de tableaux par lettre : de 1 à 4
Ce qui nous donne en gros :
fichier_A1_2001 fichier _A1_2002 fichier_A1_2003 fichier_A1_2004
fichier_A2_2001 ... ... ...
fichier_A3_2001 ... ... ...
fichier_A4_2001 ...
fichier_B1_2001 ...
fichier_B2_2001 ...
...
fichier_G4_2001 ... fichier_G4_2004
Ces fichiers ayant la même structure, je voudrais agir sur chacun d'eux en même temps.
J'ai donc voulu créer une variable qui prend comme valeur les différentes valeurs possibles des différents fichiers (pour pouvoir par la suite, ouvrir tous ces fichiers et agir sur eux). J'ai commencé par un petit échantillon (avec 9 valeurs sans variation de la date).
Sub OuvrirClasseur()
Dim strFichier(1 To 9) As String 'nom du fichier
Dim tableau(1 To 3) As String
tableau(1) = "A"
tableau(2) = "B"
tableau(3) = "C"
For m = 1 To 9
For i = 1 To 3 Step 1
For j = 1 To 3 Step 1
strFichier(m) = "fichier_" & tableau(i) & j & "_2004.xls"
Next
Next
Next
'Vérification de la valeur prise par strFichier
Range("A1") = strFichier(1)
Range("A2") = strFichier(2)
Range("A3") = strFichier(3)
Range("A4") = strFichier(4)
Range("A5") = strFichier(5)
Range("A6") = strFichier(6)
Range("A7") = strFichier(7)
Range("A8") = strFichier(8)
Range("A9") = strFichier(9)
End Sub
Ce qui me retourne dans les différentes valeurs de strFichier(m), la dernière valeur de la boucle, soit : fichier_C_2004.xls
Pourriez-vous m'en expliquer la raison et me dire comment je pourrais créer pour chaque variable une valeur différente prise ?
Merci d'avance !
2 réponses
Bonjour,
Simplifiées, voici tes 3 boucles :
m = 1 to 9
i = 1 to 3
j = 1 to 3
next j
next i
next m
Or toi, ce que tu veux, c'est qu'à chaque valeur de i et/ou de j, m (servant d'indice à ta variable tableau) s'incrémente...
Donc, pour qu'à chaque "changement de valeur de i ou de j m = m + 1, il convient d'écrire :
N'oublie pas également de déclarer toutes tes variables :
Dim i&, j&, m&
Simplifiées, voici tes 3 boucles :
m = 1 to 9
i = 1 to 3
j = 1 to 3
next j
next i
next m
Or toi, ce que tu veux, c'est qu'à chaque valeur de i et/ou de j, m (servant d'indice à ta variable tableau) s'incrémente...
Donc, pour qu'à chaque "changement de valeur de i ou de j m = m + 1, il convient d'écrire :
m = 0 For i = 1 To 3 For j = 1 To 3 m = m + 1 strFichier(m) = "fichier_" & tableau(i) & j & "_2004.xls" Next j Next i
N'oublie pas également de déclarer toutes tes variables :
Dim i&, j&, m&