Bug VB !!! Problème avec un for qui termine sur 6

maxdebide Messages postés 13 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 26 juillet 2004 - 16 juil. 2004 à 15:56
maxdebide Messages postés 13 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 26 juillet 2004 - 19 juil. 2004 à 09:52
J'ai remarquer que lorsqu'une boucle "for" termine sur 6 alors ça dernière valeur n'est pas 6 mais 0.
Bizarre mais bon c'était juste pour le signaler .

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 juil. 2004 à 16:08
Salut maxdebide
Bizarre ça.
A la fin d'une boucle For-Next, la variable prend toujours la valeur maxi de la boucle + 1
Faudrait approfondir ton code : tu modifies peut-être la valeur de ta variable dans uns sous-routine ... regarde aussi comment est dimensionnée ta variable : si elle est Public, il y a peut-être d'autres procédures qui utilisent cette même variable : pas bien
Vala
Jack
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
16 juil. 2004 à 16:13
Oui, d'accord avec jack, la boucle fini a valuer de la boucle+1. Ou alors après tu remet la valeur 0 dans ta valeur de boucle ou tu ais une opération... Je sais bien que les logiciels de micorsoft on parfois quelques bugs, mais ue erreur aussi grossiere n'aurait pas passer inapercu, depuis tout ce temps que vb existe !
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
16 juil. 2004 à 16:37
je confirme, le i vas se terminer avec sa dernière valeur, à moins que tu la change avant de vérifier sa valeur

c'est un bug dans ton code et pas dans VB6.0

tiens un vrai bug, dans Access 97, j'ai pogné cette erreur:
Microsoft Access

Microsoft Access ne peut trouver l'assistant ou la section Déclarations d'un module Visual Basic comporte une erreur de syntaxe.

La librairie de l'assistant dont vous avez besoin manque peut-être dans la clé Librairies de la section Microsoft Access du Registre Windows.

Afin de vous assurer que l'Assistant se trouve dans le registre Windows, relancez l'installation opur réinstaller Microsoft Access, puis compiler tous les modules Visual Basic dans la base de données


ce que j'aime c,est la dernière ligne "compiler tous les modules Visual Basic" lol, comme si j'avais les sources. En plus se message a été afficher quand j'ai voulu regarder le lien de mes table, donc c,est pas dans le code, j'avasi encore rien ouvert lol. Oki un petit redémarrage d'acces a corriger le problème
0
maxdebide Messages postés 13 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
16 juil. 2004 à 18:11
Ba c bizarre g fait juste :
for i = 1 to 6
if i = 0 then msgbox "BUG"
next i
et ça marche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxdebide Messages postés 13 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
16 juil. 2004 à 18:16
Voila le vrai bug :

For i = 0.01 To 0.06 Step 0.01
MsgBox i
Next i

il n'affiche pas 0.06
par contre
For i = 0.01 To 0.07 Step 0.01
MsgBox i
Next i

affiche 0.06 et 0.07

c vraiment bizarre
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 juil. 2004 à 18:34
Salut maxdebide
Oui, tu as raison, il n'affiche pas le 0.06
C'est à peu près normal.
En fait, il faudrait que tu dimensionnes ta variable i :
Dim i As Single
Et là tu t'apercevras que la dernière valeur n'est pas 0.06 mais 5.99999E-02 : C'est à cause des arrondis.
Je te suggères d'utiliser des entiers de 1 à 6 et d'utiliser CSng(i / 100) pour récupérer ta valeur réelle :
Dim i As Integer, j As Single
For i = 1 To 6
j = CSng(i / 100)
MsgBox j
Next i


Vala
Jack
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
18 juil. 2004 à 00:12
Jack a la solution !!
Il est de toute façon toujours fortemetn déconseiller d'utiliser auter chose que des entiers pour faire une boucle du type "For ... To ... Next" !!!

Christophe R.
0
maxdebide Messages postés 13 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
19 juil. 2004 à 09:52
Merci les gas c t pas pour moi mais c t pour signaler le problème,moi g pas eu de problème pour le résoudre.
0
Rejoignez-nous