problème de précision dans les valeurs extraites avec ExecuteExcel4Macro

Roland_M

XLDnaute Barbatruc
bien le bonsoir à tous,

voilà, il s’agit d’un utilitaire que j’ai fais pour mon fils à son travail pour lui extraire des valeurs
dans plusieurs centaines de fichiers (des références de fabrication en verrerie)
pour une question de rapidité j’utilise donc ExecuteExcel4Macro pour lire le contenu de ces cellules.
mais le problème avec cette méthode c’est que les valeurs extraites sont parfois fausses !?

exemples de valeurs tirées d’un classeur source avec ExecuteExcel4Macro:
R$ = ExecuteExcel4Macro(…….)
s’il y a 107 dans la cellule R$= « 106,666666666667 »
s’il y a 89 dans la cellule R$= « 89,3333333333333 »
et c’est encore heureux que je ne colle pas la valeur direct dans une cellule sinon c’est une aberration !
pour 107 j’ai 106666666666667
j’utilise donc Replace() pour obtenir du numérique depuis vb vers cell excel(, et .)
R$ = ExecuteExcel4Macro(…….): Cells(Lig, Col) = Replace(R$, ",", ".")

j’avais déjà constaté cette anomalie sous vba, les calculs ne sont pas toujours précis !
quelque soit la déclaration des variables ! par contre excel est bien plus précis !
dans temps avec QuickBasic j’avais aussi constaté cette anomalie. Basic n’est pas précis !
(avec des 7 on avait parfois 6.9999.. ou 7.1111111)
j’avais déjà lu une explication à ce sujet(stockage des val en mémoire) mais j’ai oublié !

j’attends vos réactions à ce sujet et merci par avance si solution il y a !
 

MichD

XLDnaute Impliqué
Re : problème de précision dans les valeurs extraites avec ExecuteExcel4Macro

Bonjour,

J'ai lu en diagonale ta question et ce phénomène est bien connu.

Quand Excel exécute une opération, il doit tout transformer en binaire, effectuer l'opération demandée
et afficher le résultat en décimal. Il arrive que le résultat émanant de ces manipulations ne donne pas un
résultat juste et qu'un résidu de quelques poussières à la xième décimal.

Comme tu importes des données de fichiers fermés, il est fort possible que dans le fichier source, l'affichage soit exact
à cause du format de cellules (Exemple : limitation de l'affichage à 2 décimales). Cependant lors de l'importation
de la valeur de la cellule, tu importes tout le contenu de la cellule et non un format. Si le fichier source affichait
15 décimales est-ce que le contenu de la cellule serait le même?

2 solutions possibles :

A ) Cocher l'option "Définir le calcul avec la précision au format affiché"

B ) Tu utilises la fonction arrondi().
 

Roland_M

XLDnaute Barbatruc
Re : problème de précision dans les valeurs extraites avec ExecuteExcel4Macro

merci de vous interesser à mon problème

Staple: merci mais pas évident de mettre mon exemple à moins d'en créer un !? je peux y regarder !?
mais ça ne changerait rien au problème car il n'y a pas d'erruer de programmation ! j'ai bien tout vérifé avant de poster.

MichD: tu as tout compris et c'est exactement ce qui se passe, je m'en douté un peu !
concernant le format des cellules il est évident que j'y ai pensé en premier ! il s'agit bien d'entier dans la source !
je n'ai pas le problème d'affichage puisque j'ai formaté les cellules et donc on ne voit pas apparaitre cette anomalie !
c'est quand j'ai cliqué sur la cellule qui affichée évidemment 107 vu son format entier,
que j'ai vu dans la barre des formules s'afficher 106.666...

je crois que l'on ne peut rien y faire ! c'est comme tu le dis :
----------------------------------------------------------
Quand Excel exécute une opération, il doit tout transformer en binaire, effectuer l'opération demandée
et afficher le résultat en décimal. Il arrive que le résultat émanant de ces manipulations ne donne pas un
résultat juste et qu'un résidu de quelques poussières à la xième décimal.
----------------------------------------------------------

je vous remercie encore et une bonne soirée à vous deux !
 

Dranreb

XLDnaute Barbatruc
Re : problème de précision dans les valeurs extraites avec ExecuteExcel4Macro

Bonjour.
Dans le dernier exemple si la barre de formule affiche 106,6666... c'est que la cellule contient ce nombre et non pas 107 qui résulterait seulement d'un format excluant les décimales. Il ne faut pas tout mélanger. Les reliquats de conversions en binaire n'introduisent que des différences de l'ordre de 10^-15 pas plus.
Cordialement.
 

Roland_M

XLDnaute Barbatruc
Re : problème de précision dans les valeurs extraites avec ExecuteExcel4Macro

re

mes amis, je viens d'apprendre, par mon fils, l'origine du phénomème !
voici l'explication de ce qui m'a introduit en erreur !
des entrées au clavier(arrondi) et d'autres par formule dans des cellules au format sans décimale
(normalement il s'agit d'un calcul simple pour un battement donné)
exemple 80/6*8 soit 106,66666.. ils entraient au clavier directement 107 donc réellement 107
exemple 80/6*4 soit 53,33333... ils entraient au clavier directement 53 donc réellement 53
(c'est pourquoi je ne comprenais pas cette imprécision !)
depuis tous les fichiers ont étaient modifiés avec une formule
ici on a E5=80 et dans la cellule concernée on a : =E5/6*8
et on voit toujours apparaitre 107 puisque c'est le format imposé sans décimale !
mais en réalité c'est bien 106,66666... idem pour 53 c'est 53,333333

maintenant tout s'explique, et suis content de voir que mon travail fonctionne bien !
merci encore à vous tous !
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 954
Membres
103 686
dernier inscrit
maykrem