Roland_M
XLDnaute Barbatruc
Bien le bonjour à tout le monde,
Tout d'abord mes meilleurs voeux à toutes et à tous pour l'année 2015,
avec une petite pensée pour Monique !
Concernant mon problème de précision il est déjà connu mais cette fois c'est différent !
depuis vba Cells(Lig, Col) = MaValeur! (l'exemple qui suit c'est juste pour l'explication non vérifié)
il est possible que 7.77 depuis vba, dans la cellule on se retrouve avec 7.76999...
je ne parle de format cellule, je peux avoir à l'affichage 7.70, mais en passant sur la cellule on aura bien ce 7.76999...
certains diront que ce n'est pas si grave, moi je répond que si ! je m'excuse mais je suis carré, 0.02 c'est pas 0.0199
car si vous devez effectuer un test de comparaison if Cells()=7.7 la réponse sera non !
mais comme on en a déjà discuté je ne reviendrai pas là-dessus !
mon problème c'est que ça c'est généralisé !? je m'en suis aperçu seulement hier !
je pense donc aux problèmes de mise à jour récente d'office !? est-ce possible !?
j'ai un classeur de gestion de compte en banque avec une feuille par année
et comme tous les ans j'ai une fonction que me crée une nouvelle feuille
et recopie certaines valeurs retraits, virements ... mensuels.
et là surprise la plupart des valeurs à deux décimales sont fausses !?
exemple: V! = 37.83: Cells(Lig, Col) = V! et là j'ai 37,8300018310546
par contre si met en dur Cells(Lig, Col) = 37.83 là c'est ok !
j'ai essayé avec V# c'est encore pire !
pour l'instant j'ai solutionné avec Str(V!) qui colle les résultats exactes
ce que je ne comprend pas c'est que ça fonctionné ainsi avant et ce depuis le début des années 2000
c'est un comble de commencer à bidouiller pour avoir de bons résultats !
et s'il faut revoir tous mes classeurs pour mettre str() ça va pas le faire !
où est la fiabilité dans tout ça lorsqu'on travaille sur des classeurs "sérieux"
avez vous rencontré ce problème !?
si vous voulez bien faire cet essai en copiant ce petit Sub
en formatant les 6 cellules(A1:A6) au format nombre 2 décimales
Sub Essais()
For C = 1 To 6: V! = Choose(C, 37.83, 25.48, 79.3, 150.77, 52.15, 27.45): Cells(C, 1) = V!: Next
End Sub
'perso j'ai:
'valeurs > résultats
'37.83 > 37,8300018310546
'25.48 > 25,4799995422363
'79.30 > 79,3000030517578
'150.77 > 150,77000427246
'52.15 > 52,1500015258789
'27.45 > 27,4500007629394
merci d'avance
EDIT: j'oublié de dire que dans les options avancées on peut cocher: définir le calcul avec la précision au format affiché
mais pour moi ça ne me parait pas convenable !?
Tout d'abord mes meilleurs voeux à toutes et à tous pour l'année 2015,
avec une petite pensée pour Monique !
Concernant mon problème de précision il est déjà connu mais cette fois c'est différent !
depuis vba Cells(Lig, Col) = MaValeur! (l'exemple qui suit c'est juste pour l'explication non vérifié)
il est possible que 7.77 depuis vba, dans la cellule on se retrouve avec 7.76999...
je ne parle de format cellule, je peux avoir à l'affichage 7.70, mais en passant sur la cellule on aura bien ce 7.76999...
certains diront que ce n'est pas si grave, moi je répond que si ! je m'excuse mais je suis carré, 0.02 c'est pas 0.0199
car si vous devez effectuer un test de comparaison if Cells()=7.7 la réponse sera non !
mais comme on en a déjà discuté je ne reviendrai pas là-dessus !
mon problème c'est que ça c'est généralisé !? je m'en suis aperçu seulement hier !
je pense donc aux problèmes de mise à jour récente d'office !? est-ce possible !?
j'ai un classeur de gestion de compte en banque avec une feuille par année
et comme tous les ans j'ai une fonction que me crée une nouvelle feuille
et recopie certaines valeurs retraits, virements ... mensuels.
et là surprise la plupart des valeurs à deux décimales sont fausses !?
exemple: V! = 37.83: Cells(Lig, Col) = V! et là j'ai 37,8300018310546
par contre si met en dur Cells(Lig, Col) = 37.83 là c'est ok !
j'ai essayé avec V# c'est encore pire !
pour l'instant j'ai solutionné avec Str(V!) qui colle les résultats exactes
ce que je ne comprend pas c'est que ça fonctionné ainsi avant et ce depuis le début des années 2000
c'est un comble de commencer à bidouiller pour avoir de bons résultats !
et s'il faut revoir tous mes classeurs pour mettre str() ça va pas le faire !
où est la fiabilité dans tout ça lorsqu'on travaille sur des classeurs "sérieux"
avez vous rencontré ce problème !?
si vous voulez bien faire cet essai en copiant ce petit Sub
en formatant les 6 cellules(A1:A6) au format nombre 2 décimales
Sub Essais()
For C = 1 To 6: V! = Choose(C, 37.83, 25.48, 79.3, 150.77, 52.15, 27.45): Cells(C, 1) = V!: Next
End Sub
'perso j'ai:
'valeurs > résultats
'37.83 > 37,8300018310546
'25.48 > 25,4799995422363
'79.30 > 79,3000030517578
'150.77 > 150,77000427246
'52.15 > 52,1500015258789
'27.45 > 27,4500007629394
merci d'avance
EDIT: j'oublié de dire que dans les options avancées on peut cocher: définir le calcul avec la précision au format affiché
mais pour moi ça ne me parait pas convenable !?
Dernière édition: