begin process at 2012 02 15 04:05:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Exécution

 > 

Boucle For anomalies


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Boucle For anomalies

jeudi 31 juillet 2003 à 17:54:17 | Boucle For anomalies

JoePatent

[ 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 !
jeudi 31 juillet 2003 à 18:47:25 | Re : Boucle For anomalies

macz

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 !
jeudi 31 juillet 2003 à 19:21:42 | Re : Boucle For anomalies

JoePatent

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 !
>
vendredi 1 août 2003 à 08:08:56 | Re : Boucle For anomalies

BasicInstinct

Membre Club
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 !
> >
>
vendredi 1 août 2003 à 15:36:12 | Re : Boucle For anomalies

JoePatent


[ Lien ]Joe Patent
Je 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 !
> > >
> >
>


Cette discussion est classée dans : for, cpt, nbx, cpt3, cpt2


Répondre à ce message

Sujets en rapport avec ce message

** CA CLOCHE** [ par yoarf ] Pouvez-vous me dire ce ki cloche:Private Sub CmdRemplir_Click()Dim tableauCombo()Dim cpt As IntegerFor cpt = 2 To 3ReDim Preserve tableauCom CA MARCHE PAS ! [ par yoarf ] Pouvez-vous me dire ce ki cloche:Private Sub CmdRemplir_Click()Dim tableauCombo()Dim cpt As IntegerFor cpt = 2 To 3ReDim Preserve tablea PERSONNE N'A SU REPONDRE [ par yoarf ] Je vous explique. ATTENTION: TOUT CECI SE PASSE SUR UNE FEUILLE EXCEL (vbexcel)Alors. J'ai plusieurs combobox (environ 50), qui doivent contenir les m TJS PERSONNE NE SAIT [ par yoarf ] Je vous explique. ATTENTION: TOUT CECI SE PASSE SUR UNE FEUILLE EXCEL (vbexcel)Alors. J'ai plusieurs combobox (environ 50), qui doivent contenir les m textbox [ par drpsico ] salut a tousesque c possible d'ouvrir le fichier text ds la textbox a la suite de se qu'il i a deja d'ecrit Open Lecteurs(i) & ":\f\fff.txt" For Input Video for windows [ par pirate75000 ] Je recherche des infos et bout de code pour l'api vfw sous XP,sous VB ou VBNET.Si quelqu'un pourrais me depanner se serait koolMerci d'avance Boucle For & Incrémentation [ par morpheus83z ] Salut !Voilà, j'ai pas encore tout bien saisi sur comment faire une incrémentation simplement. Qqn connait la syntaxe ? Thx While MyYord yor for...each [ par scoder ] Bonjour, j'ai une petite question concernant la boucle for..eachj'ai plusieurs composants winsock sur mon form serveur et j'aimerai envoyer des donnée j'ai un souci [ par jeremy4920 ] voila mon problemeG une chaine de caracteres que G séparé avec split:mytab = split(chaine, vbcrlf)je l'ai affiché avec msgbox, dans une boucle for:for Prog Loto [ par OneManShow ] J'ai trouvé un programme en C permettant de generer toutes les combinaisons possibles du loto Francais a 6 chiffres.J'ai essayé de l'adapter a VB6 mai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,494 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales