Boucle for

Résolu/Fermé
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020 - 12 juin 2013 à 11:13
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020 - 12 juin 2013 à 13:43
Bonjour,

existe-t-il une syntaxe de boucle for pour des valeurs discontinues?
exemple:

"For i= 1 / 3 / 6/ 13"
cells(1,i).select
next

Merci d'avance pour votre aide


A voir également:

4 réponses

NeoTsu Messages postés 58 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 19 juin 2013 3
12 juin 2013 à 11:30
Bonjour,

Je n'en connais pas, mais je peux te proposer:


For i= 1 to 13

cells(1,i).select 

If i = 1 then
i = 2
else
if i = 3 then
i = 5
else
if i = 6 then
i = 12
else
end if
end if
end if
next i


si tu a peu de test a faire, et toujours les mêmes, cela pourra résoudre ton problème

Remarque, il est également possible de le faire avec des i qui changent si ils sont renseignés par l'utilisateurs en utilisant des variables, mais il faut que le nombre de "cas" a traiter soit toujours le même
0
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020
12 juin 2013 à 11:36
Re,

Merci pour ta réponse, c'est très malin. Par contre ça reste très redondant si on a beaucoup de cas... Je continue de chercher mais je garde ton idée en tête.

Merci encore.
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 736
12 juin 2013 à 11:48
Bonjour

Une possibilité : mettre les valeurs dans un tableau

A(1)=1; A(3)=6;A(3)=6.A(4)=13

et

for i=1 to 4
cells(1,A(i)).select
next
0
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020
12 juin 2013 à 12:06
Re,

très bonne idée aussi!
Par contre, comment sont définis A(1), A(2).... ?

merci
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 736
12 juin 2013 à 12:15
C'est à toi de les définir dans le code en fonction de tes besoins

Tout dépend à quoi correspondent les valeurs
sont elles arbitraires ? il faut les rentrer en ligne de code A(1)=1 : A(2)=6: etc
dépendent elles de résultat d'un calcul ? d'une valeur d'une cellule ? tu peux y faire référence dans le code A(1) = cells((1,1).value : A(2)=cells(1,2).value etc

Ne pas oublier en debut de module de dimensionner le tableau
Dim A(20) par ex pour 20 valeurs
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 12/06/2013 à 12:23
Salam megatron.....

Je ne pense pas qu'on puisse le faire directement avec FOR mais en combinant la boucle FOR avec l'instruction SELECT CASE on peut restreindre l'exécution du code aux seules valeurs indiquées par CASE.

Voici un exemple où parmis les nombres de 1 à 10, seuls 1;5;8 sont traités (affichage d'un msgbox):

For i = 1 To 10
  Select Case i
  Case 1, 5, 8: MsgBox i
  End Select
Next i


J'espère que cela t'aidera. :)
0
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020
12 juin 2013 à 13:38
Re,
c'est excellent. ça allège pas mal le code.

Merci
0
megatronnbjja Messages postés 63 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 avril 2020
12 juin 2013 à 13:43
Merci à tous pour votre aide et votre réactivité.

Megatron
0