OVH Cloud OVH Cloud

Explication de boucle

19 réponses
Avatar
Ayrton [ASC]
Bonjour et très bonne et heureuse année à toutes et à tous

Voilà ce qui m'amène ; je fais un petit test sur cette boucle :
Sub test()
Dim X As Integer
X = 2
For i = 1 To 4
X = X + 1
Next i
MsgBox X
End Sub

Je m'attendais à ce que le résultat soit 6 mais en fin de compte ma
MsgBox m'affiche 5 .
J'aimerais une petite explication s'il vous plaît car là, je ne
comprends pas pourquoi le résultat est de 5 ; c'est sûrement évident
pour vous mais pas pour moi........;-(

D'avance, un grand merci à toutes et à tous

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

9 réponses

1 2
Avatar
Ayrton [ASC]
Bonjour *jps*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
crisse de tabernacle, serge : c'est bien ce que je subodorais : j'ai
dit une c...ie à christophe ayrton en susurrant que si on trouvait
11, c'était parce qu'il y avait i = i + 1....pas besoin en
fait...bouh que tout cela me dépasse!
jps


C'est pas grave jps, c'est déjà bien gentil de m'avoir aidé...

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

Avatar
garnote
C'est bien cela.

Trouvé cette explication :
For i = 1 To 5
Print i
Next
Cette boucle affiche 5 fois la valeur de i, c'est-à-dire 1, 2, 3, 4, 5.
Elle commence à i=1, vérifie que i est bien inférieur à 6, etc... jusqu'à atteindre la valeur i=6,
pour laquelle la condition ne sera plus réalisée, la boucle s'interrompra et le programme
continuera son cours.
à cette adresse :
http://www.commentcamarche.net/vbscript/vbscond.php3

Bonsoir, Bonne nuit
Serge


"Ayrton [ASC]" a écrit dans le message de news:
Bonjour *garnote*,
Dans ton message de news:u1l$,
Tu nous annonçais ce qui suit :-(*)

Une dernière remarque au sujet des boucles.
Exemple :
For i = 1 to 10
gnagnagna
Next i
Quand la boucle est terminée, ne jamais oublier que
la valeur de i est égale à 11. Ça m'a déjà causé de
très gros maux de tête ;-)


Ah bon ? Il y a une raison à celà jesuppose ?
Et dans ce cas là, qu'il y ai ou non une MsgBox après le Next i , il y a toujours unedifference de 1 ?
Par exemple : For i = 1 to 25
blablabla
Next i
i vaudra 26 à la fin de la boucle ?
Ais je bien tout compris ?

Merci garnote ;-)

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr




Avatar
Ayrton [ASC]
Bonjour *garnote*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
C'est bien cela.

Trouvé cette explication :
For i = 1 To 5
Print i
Next
Cette boucle affiche 5 fois la valeur de i, c'est-à-dire 1, 2, 3, 4,
5. Elle commence à i=1, vérifie que i est bien inférieur à 6, etc...
jusqu'à atteindre la valeur i=6, pour laquelle la condition ne sera
plus réalisée, la boucle
s'interrompra et le programme continuera son cours.
à cette adresse :
http://www.commentcamarche.net/vbscript/vbscond.php3


Merci beaucoup Serge, c'est très gentil
Bonne nuit

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

Avatar
FxM
Bonsoir,

JPS étant retourné à l'hospice, je me permets de répondre à sa place.

Ok merci beaucoup jps ; je suppose que ce que tu me dit est valable à
chaque fois ?


Oui


j'entends par là que si je mets ma MsgBox après la boucle,
je serais toujours incrémenté de 1 ? Dans des boucles du même style
bien évidement....


En fait, la boucle s'arrête quand le nombre dépasse la seconde limite.
Dans la boucle que tu cites, tu obtiens effectivement +1

Pour ce qui suit, ce sera -6.6 en sortie ...
Sub test()
For a = -1 To -6.5 Step -0.2
Next a
MsgBox a
End Sub

@+
FxM


Bonjour *jps*,
Dans ton message de news:%,
Tu nous annonçais ce qui suit :-(*)
bonjour christophe


Bonjour jps,

en mettant ta MsgBox après que la proc ait fini la boucle, il est
normal que tu trouves la dernière valeur de X (6, donc) incrémentée
de 1 (7, toujours donc) dans ta MsgBox
jps (qui l'a beaucoup bouclée tous ces temps-ci ;qu'est-ce que tu
dis, le moussaillon? que ça repose?)


Ok merci beaucoup jps ; je suppose que ce que tu me dit est valable à
chaque fois ? j'entends par là que si je mets ma MsgBox après la boucle,
je serais toujours incrémenté de 1 ? Dans des boucles du même style bie
névidement....

Merci beaucoup jps




Avatar
jps
j'avais peur que mes copains (je parle des vrais, des solides, des uniques)
me lâchent en 2007, ben non, voyez-vous....
jps

"FxM" a écrit dans le message de news:

Bonsoir,

JPS étant retourné à l'hospice,


Avatar
Fredo P.
--
'Ôtez toutes voyelles avant l'@
http://frdpst.9online.fr
"jps" a écrit dans le message de news:
#
j'avais peur que mes copains (je parle des vrais, des solides, des
uniques)

me lâchent en 2007, ben non, voyez-vous....
jps


Même si on en fait pas parti, comment pourrait on en arrivé la?

Avatar
FxM
"Qui aime bien, châtie bien"
... Nous, on t'adore ! :o)

@+
FxM


j'avais peur que mes copains (je parle des vrais, des solides, des uniques)
me lâchent en 2007, ben non, voyez-vous....
jps

"FxM" a écrit dans le message de news:

Bonsoir,

JPS étant retourné à l'hospice,






Avatar
jps
attends, zorg2net, notre québécois de garnote va te répondre car je pense
que tu fais fausse route...
d'ailleurs, si tu regardes la ficelle en question, la réponse y est donnée
en attendant, bonne année à toi aussi
jps

"zOrg2net" a écrit dans le message de
news:
Bonjour @tous et tous mes voeux pour cette nouvelle année.

Très marrant cette discussion, car on démarre avec la valeur de X qui
égale
6, celle qu'on demande de renvoyer avec un boite de message et on fini
avec
la valeur de i, qui n'est que la valeur de la variable incrémentée par la
boucle.
C'est rigolo.
Bon d'après moi, voilà ce qui se passe:
La valeur initiale de X est égale à 2
A la fin de la première boucle, elle passe à 3 puisqu'on l'incrémente de 1
avt le next.
Donc si:
i=1 -> X=3
i=2 -> X=4
i=3 -> X=5
i=4 fin de boucle -> X=6
Ben voilà ! Qu'en pensez-vous ?

zOrg2net
7OuNet




Bonjour *garnote*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
C'est bien cela.

Trouvé cette explication :
For i = 1 To 5
Print i
Next
Cette boucle affiche 5 fois la valeur de i, c'est-à-dire 1, 2, 3, 4,
5. Elle commence à i=1, vérifie que i est bien inférieur à 6, etc...
jusqu'à atteindre la valeur i=6, pour laquelle la condition ne sera
plus réalisée, la boucle
s'interrompra et le programme continuera son cours.
à cette adresse :
http://www.commentcamarche.net/vbscript/vbscond.php3


Merci beaucoup Serge, c'est très gentil
Bonne nuit

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr







Avatar
Ayrton [ASC]
Bonjour *FxM*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
Bonsoir,


Bonsoir,

JPS étant retourné à l'hospice, je me permets de répondre à sa place.


;-)


En fait, la boucle s'arrête quand le nombre dépasse la seconde limite.
Dans la boucle que tu cites, tu obtiens effectivement +1

Pour ce qui suit, ce sera -6.6 en sortie ...
Sub test()
For a = -1 To -6.5 Step -0.2
Next a
MsgBox a
End Sub


Merci beaucoup FxM

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr




Bonjour *jps*,
Dans ton message de news:%,
Tu nous annonçais ce qui suit :-(*)
bonjour christophe


Bonjour jps,

en mettant ta MsgBox après que la proc ait fini la boucle, il est
normal que tu trouves la dernière valeur de X (6, donc) incrémentée
de 1 (7, toujours donc) dans ta MsgBox
jps (qui l'a beaucoup bouclée tous ces temps-ci ;qu'est-ce que tu
dis, le moussaillon? que ça repose?)


Ok merci beaucoup jps ; je suppose que ce que tu me dit est valable à
chaque fois ? j'entends par là que si je mets ma MsgBox après la
boucle, je serais toujours incrémenté de 1 ? Dans des boucles du
même style bie névidement....

Merci beaucoup jps





1 2