Bonjour,
J'ai une boucle simple :
J'aimerais savoir s'il est possible de donner une condition dans la boucle pour qu'elle ne fasse pas i = 60; 40 (et autres)Code:
1
2 for i=1 to 80 ....
Merci par avance.
Version imprimable
Bonjour,
J'ai une boucle simple :
J'aimerais savoir s'il est possible de donner une condition dans la boucle pour qu'elle ne fasse pas i = 60; 40 (et autres)Code:
1
2 for i=1 to 80 ....
Merci par avance.
Bon je ne suis pas un pro. Mais je peux peut etre t'aider si tu es un peu plus précis.
Y a-t-il une certaine regularité dans les chiffres a sauter?
la solution est simple.
Code:
1
2
3
4
5
6 For i=1 To 80 Step 1 If i=40 Then i=i+1 ... ... Next i
il n'est pas très conseillé d'incrémenter soi même une variable de contrôle
Je préfrererai aussi un:
if i<>40 or i<>60 then
instructions
end if
Code:
1
2
3
4
5
6
7
8
9
10 Sub testbou() Dim x As Integer For x = 1 To 10 Select Case x Case 2, 3, 4 Case Else MsgBox (x & "***") End Select Next x
sk8bcn : Oui, en fait je doit éviter de tomber sur le 60 particulièrement.
Mais plus précisément j'ai un tableau avec une colonne "Type de population", allant de 1 à 80 (mais en fait je n'ai pas 80 valeur, car il y'a les pop 1=>21, 30, 40,60 et 80)
Donc j'essaye de faire un parcours de cette colonne afin de lui dire, de réaliser un traitement sur toutes les lignes des populations allant de 1 à 21, puis 30 et enfin 80. Vous me diriez pourquoi pas 60, car en fait cette population n’est pas dans la même catégorie que les autres populations.
J'aimerais ne pas trop surcharger la boucle, afin qu’il ne copie pas des lignes qui ne sont pas à traiter et qu’il ne fasse pas des tours pour rien.
Je vais tester mais il va quand même tester les valeurs 22, 23, 24, 25, 26, 27, 28, 29,31 etc .... 79 ce qui est assez long vu ce qui est contenu dans la boucle.Code:if i<>40 or i<>60 then
Random : Même problème que sk8bcn
Ce qui est assez lourds à répéter dans le programme (j’ai une dizaine de boucle dans ce genre)
Commodore_Psykopate : En fait, une incrémentation soi même de variable, cela ne peut pas engendrer des problèmes divers ?
Merci beaucoup pour vôtre aide.
je suis d'accord avec le fait qu'incrémenter une variable de controle peut engendrer des problèmes, mais le principe que j'ai posté est bon: éviter le traitement des valeurs non souhaitées en les répertoriant dans un if.
cependant, incrémenter une variable de contrôle est mauvais sauf dans le cas où cette variable ne sert qu'à boucler sans être utilisée ailleurs que comme compteur de la boucle.
On le fait bien pour les While, non ?
-edit- il est aussi possible de traiter les différentes valeurs à exclure dans un Switch.
Et il n'est pas possible de faire une boucle de ce genre :
Ce code ne marche pas, mais peut être le re-écrire de façon correct.Code:
1
2
3 For i=1 to 21 and i=30 and i=80 do .... next i
Merci encore.
de 1 à 80, ça ne sera pas trop long je pense, tu devrais boucler sur le tout.
Je n'ai pas d'idée astucieuse sur le coup, j'avoue
Code:
1
2
3
4
5
6
7 for i=1 to 80 if i<21 or i=61 or i=80 then end if next i
Ok, merci beaucoup
Bonne continuation