Joke758
Messages postés34Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention 6 juin 2008
-
23 mai 2007 à 14:20
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
27 mai 2007 à 01:05
Bonjour, je voudrais savoir comment intérompre une loop en plein milieu. Exemple:
For i = 1 to 10000
if Int(Rnd()*3+1) = 3 Then 'ici!!
Next
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 23 mai 2007 à 14:33
minute, là ...
Il va te falloir en plus laisser la place (doevents)
et utiliser une booléenne ...conditionnelle... si tu veux l'interrompre dynamiquement à la demande.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 23 mai 2007 à 14:51
Salut à tous,
Et oui c'est bien beua de sortir d'un for..next, mais sans avoir une info de sortie prématurée comment tu vas le savoir ? Hein !! Comme le fait remarqué Jmfmarques, utilise une variable Boolean, ainsi en vérifiant celle-ci, tu sais si tu es sortis de la boucle ou pas....
Dim Sortie As Boolean
For i = 1 to 10000 if Int(Rnd()*3+1) 3 Then Sortie True : Exit For
Next
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 25 mai 2007 à 13:37
Avis perso : Il me semble que un Do while serait plus adapté. Exit for, c'est un peu spaghetti. C'est moins décrié qu'un Goto mais pas loin quand même...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 mai 2007 à 23:17
cavo798, je ne vois aucun rapport entre un Exit For et un Goto...(?)
Pour moi, lorsque je l'utilise, c'est essentiel et n'a rien à voir avec un Goto qui te promène de haut en bas.
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 26 mai 2007 à 21:48
Il me semble que l'utilisation d'un For .. Next ne devrait être utilisé que lorsqu'on sait combien de fois on doit faire la boucle. Si on quitte la boucle "en cours de route", c'est que la condition de fin n'est pas le nombre d'itération mais la rencontre d'une condition et dans ce cas, me semble-t-il, un Do While p.e. serait plus opportun. Ce n'est qu'un avis perso et c'est évident, très puriste
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 26 mai 2007 à 21:48
Il me semble que l'utilisation d'un For .. Next ne devrait être utilisé que lorsqu'on sait combien de fois on doit faire la boucle. Si on quitte la boucle "en cours de route", c'est que la condition de fin n'est pas le nombre d'itération mais la rencontre d'une condition et dans ce cas, me semble-t-il, un Do While p.e. serait plus opportun. Ce n'est qu'un avis perso et c'est évident, très puriste
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 26 mai 2007 à 21:48
Il me semble que l'utilisation d'un For .. Next ne devrait être utilisé que lorsqu'on sait combien de fois on doit faire la boucle. Si on quitte la boucle "en cours de route", c'est que la condition de fin n'est pas le nombre d'itération mais la rencontre d'une condition et dans ce cas, me semble-t-il, un Do While p.e. serait plus opportun. Ce n'est qu'un avis perso et c'est évident, très puriste
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 mai 2007 à 01:05
Et moi je pense qu'une boucle For...Next ou Do...While ou Do...Until est finalement la même chose ou à peu près.
Effectivement, c'est la condition qui décide si oui ou non on sort.
Si j'ai 1000 lignes à lire et que je cherche la valeur 5, avec une ou l'autre des boucles je vais demander de sortir (Exit For, Exit Do) quand la valeur est trouvée.
C'est plus dans cette optique que je voyais Exit comme indispensable...
Bonne fin de week-end...