Dans un programme relativement simple contenant plusieurs boucles imbriquées, je rencontre le problème suivant:
dans une ligne de type " Do While x <= L " où x est une variable et L une constante, toutes 2 déclarées en Double, il arrive parfois (et parfois pas), de façon apparemment aléatoire, que le programme n'entre pas dans la boucle quand x = L ...
Je précise que ma connaissance en vba est assez restreinte... N'y-aurait-il donc pas une explication toute simple à ce problème ?
x varie de 0 à L avec un pas de 0,1.
L est égale à une valeur renseignée par l'utilisateur (10 par exemple).
Pour x=0 jusqu'à x=9,9 tout fonctionne correctement. Mais quand x passe à 10 donc quand x=L, le programme ne rentre pas toujours dans la boucle alors qu'il devrait puisque la condition est "Do while x <= L"
J'ai mis le fichier en pj, au cas où il y en a qui s'ennuieraient
ça doit être dû à une perte de précision suite aux conversions décimal/binaire.
Essaie avec :
Code:
Do While Round(y, 6) <= Round(L, 6)
eric
edit : ajoute en-dessous la ligne :
If (Round(y, 6) = Round(L, 6)) <> (y = L) Then Debug.Print y - L: Stop
Tu verras que pour y=L=2 en fait y - L = 4.44089209850063E-16 et non 0
ça doit être dû à une perte de précision suite aux conversions décimal/binaire.
Essaie avec :
Code:
Do While Round(y, 6) <= Round(L, 6)
eric
edit : ajoute en-dessous la ligne :
If (Round(y, 6) = Round(L, 6)) <> (y = L) Then Debug.Print y - L: Stop
Tu verras que pour y=L=2 en fait y - L = 4.44089209850063E-16 et non 0