XL 2010 Problème avec un résultat numérique

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai une variable numérique, "maVariable", déclarée comme Double (#).
En faisant des essais, j'ai remarqué cette curiosité.
Exemple :
maVariable = 0,13333333333...
si, dans une macro, j'écris :
[E32] = maVariable * 10 --> 1,333333
[E32] = maVariable * 20 --> 2,666666
[E32] = maVariable * 30 --> 4 ................ alors que je m'attendais à 3,99999
Pourquoi cet arrondi quand pour cette valeur de maVariable on la multiplie par 30 (idem avec 60, 90...) et comment y remédier ?

Je signale que si je récupère la valeur de maVariable dans une cellule de la feuille, par ex. [E32] = maVariable, s'affiche bien en E32 0,1333333. En E33 j'écris : = E32 * 30. Résultat : 4 !
Bon, maintenant je rentre manuellement dans la cellule E35 : 0,1333333
En E36 j'écris : = E35 * 30. Résultat : 3,99999

Merci pour toute suggestion.
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Magic_Doctor, le forum

la valeur est bonne dans la cellule, c'est juste un problème d'affichage lié au format standard encore que je ne comprenne pas pourquoi uniquement en écriture par VBA.

Bien cordialement, @+
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re,

mets tes cellules au format numérique 10 décimales, tu verras que la valeur écrite en VBA est bonne, cela ne rend pas le problème d'affichage en cellule format standard plus compréhensible.

Cordialement, @+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bon, maintenant je rentre manuellement dans la cellule E35 : 0,1333333
En E36 j'écris : = E35 * 30. Résultat : 3,99999
et si tu entres manuellement en E35 la mème valeur à 11 décimales que dans ta macro, tu auras le même problème d'affichage en E36 en entrant manuellement = E35 * 30
pas lié à Vba mais bien au format standard de la cellule et à l'affichage
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Ca me parait normal, à cause de la précision des calculs : Excel ne pouvant gérer un nombre infini de chiffres après la virgule, il est obligé d'arrondir.


Supposons qu'Excel arrondisse les nombres à 10 chiffres après la virgule.
(mais ça marche quel que soit le nombre de chiffres).
Remarque : on ne peut pas mettre de trait au-dessus des chiffres, alors je le mets en-dessous. (exemple : 4/3 = 1,3)

Si on arrondi 1,3 , le dernier chiffre est un 3, donc on se retrouve avec 1,333 333 333 3.
Si on arrondi 1,6 le dernier chiffre est un 7, donc on se retrouve avec 1,666 666 666 7.
Si on arrondi 1,8 le dernier chiffre est un 9, donc on se retrouve avec 1,888 888 888 9.
Si on arrondi 1,9 le dernier chiffre est un 0, et par "effet domino" on se retrouve avec 2,000 000 000 0.

[edit]
Je viens de faire des tests avec mon Excel 32 bits sous Windows 64 bits.

Precision-de-calcul.png

Moralité : si tu ne veux pas voir 4 s'afficher, il faut ne pas dépasser les limites de précision de calcul. ;)
[/edit]
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re,

Je ne cherchais pas à avoir 3,99999 mais 3,99, voire 3,999.
Il s'agit d'une masse en g et, en pratique, en deçà du cg ou du mg, ça devient de la théorie. Le but est d'afficher dans une cellule cette valeur non arrondie. J'y suis enfin arrivé en bidouillant une fonction.
Merci pour votre intervention
 

Statistiques des forums

Discussions
312 922
Messages
2 093 658
Membres
105 777
dernier inscrit
Lili1411