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
35442
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mai 2022
356
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