Erreurs de calculs dans VBA ?

Anonyme
2024-03-26T09:59:53+00:00

Bonjour,

Il m'arrive quelque chose de très bizarre, mais je suppose qu'il y a une excplication logique :

Excel se trompe dans des opérations (soustractions) dans certains cas :

Pour être sûr qu'il ne s'agit pas de soucis de conversion (dans le code), j'applique directement le calcul dans la fenêtre "Exécution" de VBA.

Voici :

Print 1.4 - 1.3

=> et VBA répond : 9,99999999999999E-02

Par contre :

print 2.4 - 2.3

=> et VBA répond correctement : 0,1

Autres exemples :

print 40000.23 - 40000.10

=> VABA répond ceci : 0,130000000004657

? 500.8 - 500.5

0,300000000000011

? 55000.5 - 50000.8

4999,7 (là c'est correct)

? 51000.5 - 50000.8

999,699999999997

Quid ?

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

6 réponses

  1. Anonyme
    2024-03-27T09:15:25+00:00

    Bonjour Bernard, Arnaud ;-)

    Voici les étapes dans mon code :

    Image

    Quand je passe la souris sur la variable CONSO ou mieux encore, quand je regarde dans la fenêtre "variables locales" je vois qu'apparemment, c'est bien la valeur 27,8 qui lui est attribuée.

    Image

    Un peu plus loin, je mets cette variable dans une cellule :

    Image

    Et voici le résultat dans la cellule de la feuille :

    Image

    Même résultat quand je fais Image !!

    J'avoue que j'y perds mon latin ....

    Je vais tenter avec la conversion en décimale CDec

    Merci pour votre réactivité !

    A+

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-03-26T21:38:55+00:00

    Comme indiqué par Bernard avec Round tu devrais pallier à ce problème (j'ai bien VRAI en retour)

    Sinon tu peux utiliser CDec

    CDec(5.2)-CDec(5.1)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2024-03-26T21:21:32+00:00

    Curieux, ton exemple. Je n'arrive pas à le reproduire (Excel 2402 (17328.20184) sous Windows 10) :

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2024-03-26T20:18:09+00:00

    Merci Arnaud ...

    Dingue que je constate ça après tant d'années... Mais connais-tu un article qui décrit les bonnes pratiques pour gérer ce genre de biais ?

    => j'ai essayé avec la fonction ROUND, mais les variables qui récupèrent la valeur de cette fonction récupèrent tout de même la "faute".

    Exemple : VARIABLE = Round (5.2-5.1, 2) - Variable va récupérer (je ne sais comment) les 15 chiffres après la virgule, erreur incluse... et pas uniquement les 2 chiffres après la virgule, comme demandé

    Merci !

    Nicolas

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2024-03-26T10:23:52+00:00

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire