VBA - valeur qui se modifie au niveau des décimales

Franz68

XLDnaute Nouveau
bonjour,

depuis longtemps je viens sur ce forum pour trouver des solutions ... pour une fois je n'ai pas trouvé ... et désolé si ma question a déjà été traitée (si si j'ai cherché ...)

J'ai un petit souci sur VBA : un petit code simple qui va chercher avec .offset.value le contenu d'une cellule et qui le recopie dans une autre (vidée au préalable).

sauf que ma valeur est par exemple 165,53 et la destination se remplie de 165,53124587

je précise que les deux cellules ont le même format ... j'ai vérifié en augmentant le nombre de décimales après la virgule :

valeur après recopie valeur d'origine
533,5200195312500000000 533,52000000000
-147,4299926757810000000 -147,43000000000
-520,0000000000000000000 -520,00000000000
-714,4400024414060000000 -714,44000000000

il est particulier de noter que le 3ème n'a pas changé ... mais il n'avait rien après la virgule

le code :

Dim Valeur As Single
Dim origine As Single
Dim Dest As Single

Dest = 4

Range("u:u").ClearContents

Valeur = InputBox("Saisir une valeur max", "A vous ...", 0)

With Selection

Selection.Interior.Color = xlColorIndexNone

For Each cellule In Selection

If cellule.Value <= Valeur Then
cellule.Interior.Color = RGB(255, 255, 0)
origine = cellule.Offset(0, -8).Value
Range("U" & Dest).Value = origine
Dest = Dest + 1

End If

Next cellule

End With

là je sèche et remercie ceux qui pourront m'aider ...
 

pierrejean

XLDnaute Barbatruc
Re : VBA - valeur qui se modifie au niveau des décimales

Re

Eh bien voila : un des grands ténor d'Excel est arrivé
Bravo ROGER !!!!
Si je résume :les sbires de Bill ne sont pas coupables (je leur fais toutes mes excuses) et j'avais raison (mais de manière intuitive ce qui n'est guère scientifique)
 

Dranreb

XLDnaute Barbatruc
Re : VBA - valeur qui se modifie au niveau des décimales

Bonjour.
Un Single a environ 5.5 chiffres de précision et 165.37 ne devrait pas être altéré.
Mauvais raisonnement.
Environ 5,5 chiffres de précision, ça signifie que l'écart entre deux valeurs successives représentables en Single de façon exacte, est de moins de 1/100000 de l'ordre de grandeur des valeurs.
165,37 n'est pas représentable en binaire de façon exacte puisque c'est 4134,25 / 25 et qu'une division par toute autre chose qu'une puissance de 2 tel que 25 nécessiterait une infinité de chiffres binaires après la virgule, exactement tout comme la représentation décimale exigerait une infinité de décimales pour représenter une division par toute autre chose qu'un produit d'une puissance de 5 par une puissance de 2.
 

Discussions similaires

Réponses
8
Affichages
802

Statistiques des forums

Discussions
314 204
Messages
2 107 188
Membres
109 771
dernier inscrit
herve1979