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

10 réponses

1 2
Avatar
garnote
Salut,

Au Québec, ta macro me renvoie un beau 6 ;-)
N'aurais-tu pas d'autres instructions qui viendraient
perturber ta boucle ?

Serge

"Ayrton [ASC]" a écrit dans le message de news: %
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



Avatar
Trirème
Bonjour Ayrton
Rassure toi, le résultat est bien 6... chez moi.
Et je ne vois pas d'explication si c'est bien ces instructions là.
N'as tu pas écrit une autre procédure appelée elle-aussi 'test', dans un autre module at
tu crois lancer celle-ci alors que tu exécuterais celle-là ?

Cordialement,
Trirème

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



Avatar
garnote
Bonsoir Claudy,

Je ne connaissais pas ces liens.
J'aime ça.
Merci

Serge

P.-S. : Quand il ne s'agit pas d'Excel, la coutume du MPFE
veut qu'on fasse précéder l'en-tête du message de
[HS], c'est-à-dire : Hors sujet.
Et autant que possible, ne pas envoyer de messages
au format HTML.
Avatar
Ayrton [ASC]
Bonsoir Garnote, Trirème et Claudy,

1000 merci à tous les trois pour votre aide et votre gentillesse .
En effetn en cherchant un peu, j'avais un autre petit test appelé aussi
" Test " qui me retournait 5 en valeur et qu iétait aussi un essai de
boucle .
Encore merci et bonne soirée à tous les trois ! ;-)

--
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]
Re,

Excusez moi mais dans la panique, je me suis trompé de boucle ;-(
Celle que je voulais vous montrer et pour laquelle j'uarais besoin d'une
explication est celle-ci :
Sub testPerso()
Dim X As Integer
For X = 1 To 6
X = X + 1
MsgBox X
Next X
End Sub

Ma MsgBox m'affcihe 2, puis 4, pus 6 ; là, je suis OK ; par contre quand
je fais celle-ci ( j'inverse juste les lignes MsgBox X et Next X ), ma
MsgBox m'affiche 7 et là, je ne comprends plus, je suis complètement
perdu ! Je n'arrive pas à me l'expliquer ; voici celle qui me retourne 7

Sub testPerso1()
Dim X As Integer
For X = 1 To 6
X = X + 1
Next X
MsgBox X
End Sub

Encore 1000 fois merci pour votre aide plus que précieuse ;-)

--
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
jps
bonjour christophe
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?)

"Ayrton [ASC]" a écrit dans le message de news:

Re,

Excusez moi mais dans la panique, je me suis trompé de boucle ;-(
Celle que je voulais vous montrer et pour laquelle j'uarais besoin d'une
explication est celle-ci :
Sub testPerso()
Dim X As Integer
For X = 1 To 6
X = X + 1
MsgBox X
Next X
End Sub

Ma MsgBox m'affcihe 2, puis 4, pus 6 ; là, je suis OK ; par contre quand
je fais celle-ci ( j'inverse juste les lignes MsgBox X et Next X ), ma
MsgBox m'affiche 7 et là, je ne comprends plus, je suis complètement perdu
! Je n'arrive pas à me l'expliquer ; voici celle qui me retourne 7

Sub testPerso1()
Dim X As Integer
For X = 1 To 6
X = X + 1
Next X
MsgBox X
End Sub

Encore 1000 fois merci pour votre aide plus que précieuse ;-)

--
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
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 ;-)

Serge
Avatar
jps
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

"garnote" a écrit dans le message de news:
u1l$
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 ;-)

Serge




Avatar
Ayrton [ASC]
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

--
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
Forum Office :
http://forums.offices.free.fr/


"Ayrton [ASC]" a écrit dans le message de news:

Re,

Excusez moi mais dans la panique, je me suis trompé de boucle ;-(
Celle que je voulais vous montrer et pour laquelle j'uarais besoin
d'une explication est celle-ci :
Sub testPerso()
Dim X As Integer
For X = 1 To 6
X = X + 1
MsgBox X
Next X
End Sub

Ma MsgBox m'affcihe 2, puis 4, pus 6 ; là, je suis OK ; par contre
quand je fais celle-ci ( j'inverse juste les lignes MsgBox X et Next
X ), ma MsgBox m'affiche 7 et là, je ne comprends plus, je suis
complètement perdu ! Je n'arrive pas à me l'expliquer ; voici celle
qui me retourne 7 Sub testPerso1()
Dim X As Integer
For X = 1 To 6
X = X + 1
Next X
MsgBox X
End Sub

Encore 1000 fois merci pour votre aide plus que précieuse ;-)

--
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: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

1 2