Somme erronée en VBA

Résolu
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   -  
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche une explication et une solution, pouvez-vous me renseigner svp?

Je récupère des chiffres d'un fichier texte via une macro que je range dans une feuille excel.

Dans une boucle j'additionne la valeur de cellules contant ces chiffres pour déterminer un nombre de cellule. (quand j'arrive à zéro, c'est Ok).

A un moment la macro arrive à:
116,33 + -21,15
excel trouve =95,1799999999999

Je pense que cela est dû à une impression de calcul.
Comment puis-je l'éviter?

Cordialement
Alain



Vista

3 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

C'est probablement un problème d'arrondi lors de la conversion décimal - binaire mais sans le code difficile d'être précis.

Ce code ne pose pas de problème :
Sub test()
Const d1 As Double = 116.33
Const d2 As Double = -21.15
Const s1 As String = "116.33"
Const s2 As String = "-21.15"

  MsgBox (d1 + d2) & vbCr & _
         (Val(s1) + Val(s2))
         
End Sub

Cordialement
Patrice
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Autant, on peut dire un entier peut être égal à une valeur, autant, dire que 2 flottant peuvent être égaux est faux.

Tu peux dire par contre que si ta somme et entre 0.001 et -0.001 tu considère que c'est bon.

J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
0
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   14
 
Merci à vous deux

Apparemment il n'y a pas de solutions simples. La précision informatique!

Je suis passé par des nombres entiers.
Pour ce problème,
j'ai multiplié par 100 toutes mes valeurs et cela tombe juste.

Cordialement
Alain
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Si ton problème es résolu, penses à maquer le sujet comme tel.
0
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   14
 
Un oublie Excuse
Alain
0