Imprécisions dans un calcul par macro
Bonjour à tous,
En premier lieu, merci pour l'aide que vous fournissez sur ce forum. J'ai commencé le VBA il y a tout juste 2 mois et les (très) nombreuses discussions de ce forum m'ont permis de venir à bout de tous mes problèmes. :ccool: ...excepté le suivant :
J'ai crée une petite macro (ultra simple) pour générer une liste de valeurs (de 0.00 à 3.50) par incrémentation :
Code:
1 2 3 4 5 6 7 8 9
| 'INCREMENTATION POUTRE :
X0 = 40 ' Ligne de départ de l'incrémentation
CPa = 7 ' Colonne Position absolue
Ltot = Range("E11").Value ' Longueur totale de la poutre
Do
Cells(X0 + 1, CPa) = Cells(X0, CPa) + 0.01
X0 = X0 + 1
Loop Until Cells(X0, CPa) >= Ltot |
Cependant, il apparait dans la dite liste des valeurs "parasites" :
Ex : 0,820000000000001 en lieu et place de 0,82 ou encore 3,45999999999997 pour 3,46 attendu et cela me pose d'énormes problèmes pour la suite. Ce qui est étrange, c'est que cela ne le fait pas pour toute la liste...
Je ne pense pas que l'erreur vienne du code car je l'ai utilisé à de multiples reprises et l'erreur n'apparait qu'aléatoirement. Par contre, j'ai pu constater que cette même erreur se produisait également (et toujours aléatoirement) quand "j'imposais" une valeur :
Ex : Si delta < 5 alors Cellule A1 = 0,7 et la valeur que je lis en A1 après avoir fait tourner la macro est 0.69999999999997...!!!!?
Je ne sais pas du tout d'où peut venir cette imprécision.:cry:
Bref, dans un souci de clarté, ma question est la suivante :
Comment faire en sorte que les valeurs calculées via les macros soient absolument juste ?
Je remercie par avance tous ceux qui prendront la peine de se pencher sur cet épineux problème.
Alex
1 pièce(s) jointe(s)
Impossible is nothing ..?
Bon ben voilà, les autres erreurs ne se sont pas faits attendre. C'est encore plus puissant (en terme d'impossibilité) cette fois ci :
Je déclare :
Code:
DelMin = Range("J19").Value
En Range("J19"), j'ai mis (à la main) 0.7.
Ensuite, je crée un boucle avec de multiples conditions que je ne vais pas détailler ici mais dont la conclusion concernée ordonne :
Code:
Range("AZ14") = Round(DelMin, 2)
Et lorsque je clique sur "AZ14" = 0,699999988079071 !!!!!!!:cry::cry:
Ce n'est pas une histoire de boucle qui tourne pas ou autre. J'en veux pour preuve l'imprimécran du déboguage (en pièce jointe).
Là, j'ai l'impression qu'excel se rebelle..! Je pense vraiment qu'il y a un gros souci. J'en suis à penser que ma bécane est vérolée. Sinon, je ne vois pas comment il serait possible qu'excel se "trompe" sur des commandes aussi simples...
Merci par avance à qui me sortira de cette spirale infernale.