[ Lien ]Joe PatentJe voulais une reponse d'un expert... Désolé basic instinct mais tu ne t'es meme pas donné la peine d'executer le code... Mais tu repond a peu pres... ca m'aide pas du tout.
La stack d'une boucle for se construit au fur et a mesure des appels de celle-ci. Donc oui tu peux allegrement changer la valeur de la borne. C'est concu pour ça dans tout les langages que je connais.
L'exception ici, est la ré-initialisation des valeurs des compteurs après la sorties des boucles. La sorties est fait au bon moment, tout baigne. C'est simplement qu'à l'exterieur de la boucle, les compteurs reprennent la valeur initial de la borne (+1 evidement).
Tk, pas plus grave que ça...
-------------------------------
Réponse au message :
-------------------------------
> c pas une anomalie, tu ne peux pas changer les bornes de ta boucle !!!
> je pense que si tu fait:
> NBX=100
> for I=1 to NBX
> NBX=NBX-1
> next
>
> il passera qd meme 100 fois dans ta boucle !
>
> pour faire ce genre de truc il faut utiliser un WHILE
>
> @++
>
>

BasicInstinct

>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > J'ai obtenu ces resultats en simulant un traitement pour aider un autre utilisateur de ce site. Il voulait eliminer les lignes en doublon dans un document excel.
> >
> > nbx est le nombre de ligne total. Mais en cours de traitement, tu elimines des lignes. Donc le nombre total de ligne decremente au fur et a mesure que l'on parcours les lignes. Moi j'ai mit un IF avec un modulo simplement pour voir l'effet sur les compteurs de décrementer le nbx...
> >
> > Tk, je trouve tout meme ca tres etrange comme comportement. Je n'ai pas ca en C, en java ou en ADA...
> >
> > Tk, je voulais simplement savoir si les expert de visual basic était au courant de cette anomalie...
> >
> > Merci de ta réponse...
> >
> >
[ Lien ]Joe Patent> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Normalement, il ne faut pas changer les bornes d'une boucle For sans rencontrer des anomalies dont ton code est un exemple flagrant... Entre nous, à quoi te sert de savoir la valeur de cpt à la fin alors que c'est nbx ?
> > >
> > > ..:: MACZ ::..
> > >
> > > maczfr@yahoo.fr
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > >
[ Lien ]Joe Patent> > > >
> > > > Soit le code suivant :
> > > > Private Sub Command1_Click()
> > > > nbx = 10
> > > > cpt3 = 0
> > > > For cpt = 1 To nbx
> > > > For cpt2 = cpt + 1 To nbx
> > > > cpt3 = cpt3 + 1
> > > > If cpt2 Mod 5 = 0 Then
> > > > nbx = nbx - 1
> > > > End If
> > > > MsgBox "boucle1: " & cpt & " " & "Boucle2: " & cpt2 & " " & nbx
> > > > Next
> > > > Next
> > > > MsgBox "boucle1: " & cpt & " " & "passages: " & cpt3 & " " & nbx
> > > >
> > > > End Sub
> > > >
> > > > Ma valeur finale de cpt est 11 au lieu de 5 ! ! ! Si quelqu'un peut executer ce code et m'expliquer... c'est assez embetant...
> > > >
> > > > Merci bcp !
> > >
> >
>