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 -
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
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
A voir également:
- Somme erronée en VBA
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
3 réponses
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 :
Cordialement
Patrice
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
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"
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"