Boucle For i=[valeurs définies] ?

Résolu
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014 - 10 févr. 2014 à 17:56
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014 - 20 févr. 2014 à 11:20
Bonjour à tous !

Tout d'abord merci d'avance à ceux qui prendront un peu de leur temps pour m'aiguiller dans ma quête.

Je souhaite créer une boucle qui scrute les 200 colonnes d'un fichier Excel afin de trouver les emplacements de certaines qui vont me servir pour le reste de ma macro. Pour cela j'ai défini dans ma macro un tableau colonnes_utiles(14) où chaque colonne_utiles(i) représente l'intitulé des 15 colonnes considérées.

Dans le déroulement de ma macro, à un moment on va vouloir trouver par exemple les colonnes_utiles(0,1,6,10), puis, bien plus loin, rescruter pour trouver les colonnes (0,1,8,9,11,12,13).

Je ne peux donc pas utiliser une boucle habituelle "For i=initial to end", je voudrai que les valeurs de "i" ne soit pas successives mais définies.

Quelle synthaxe utiliser pour y arriver ?

Prenons l'exemple (0,1,6,10), j'ai pour l'instant testé ceci, bien entendu ça ne fonctionne pas:

Dim A() As Variant
     A = Array(0, 1, 6, 10) 
         
    For Each A In A()
        col = 1
        Do While Cells(4, col) <> colonnes_utiles(A)    'les intitulés sont en ligne 4
        col = col + 1
        Loop
       '=>ACTION SOUHAITEE
   Next A


Cette action n'est qu'une petite partie de ma macro qui pour le reste fonctionne parfaitement, mais en attendant de trouver la solution, je défini les colonnes_utiles(0,1,2,3) avec les intitulés voulus, puis un For i=0 to 3.
Plus loin je REDEFINI des colonnes_utiles(0,1,2,3,4,5,6) avec d'autres intitulés, puis un For i=0 to 6...

Dans l'idée c'est tout con mais je ne trouve pas quelle synthaxe utiliser.

Merci à vous pour vos propositions ! :)

4 réponses

RLAPT Messages postés 48 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 29 avril 2020
19 févr. 2014 à 12:49
Bonjour,

Avec du retard, voici une idée.

Placer dans une variable tableau la séquence que l'on veut appeler, puis faire une boucle for pour dérouler la liste.

Exemple.
Liste(0) = 1
Liste(0) = 3
---------
Liste(n) = x

For i = 0 to n

Utiliser en index liste(I) au lieu de I

next
0
jordane45 Messages postés 38141 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
19 févr. 2014 à 13:12
Bonjour,
Ton idée de départ était bonne..


Sub parcourirCol()
Dim col As Variant
col = Array(1, 5, 6, 8, 10)

For Each c In col
 Debug.Print Cells(1, c).Value
Next

End Sub

0
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014
20 févr. 2014 à 11:17
Merci pour vos éléments de réponse, finalement j'ai trouvé une solution qui fonctionne, à savoir :

Dim A() As Variant
A = Array(0, 1, 3, 4, 6, 7, 8) 'exemple de valeurs prédéfinies
Dim indice As Integer
Dim indice_trouve As Integer

For indice = 0 To 6
indice_trouve = A(indice) 'pour indice_trouve=2, indice=3
col = 1
Do While Cells(4, col) <> colonnes_utiles(indice_trouve)
col = col + 1
Loop
' => ACTION à réaliser

Next indice

Voilà, je vous remercie d'avoir pris un moment pour moi, j'irai voir plus en détails comment marche la fonction debug.print.

Bonne continuation à vous !

Axel
0
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014
20 févr. 2014 à 11:20
EDIT: commentaire ligne 7: pour indice=2, indice_trouve=3
0
Rejoignez-nous