Bonjour,
Je galère depuis de nombreuses heures pour un problème tout bête, en tout cas en apparence : j'ai besoin de récupérer un prix sur une cellule excel (dans mon exemple 25,360000014305115 (je précise que je n'ai pas besoin d'une telle précision, qui doit d'ailleurs venir de pbs de calculs précédents via des macros vba), et de l'afficher dans une autre feuille excel, mais avec un "." comme séparateur décimal au lieu d'une "," , et un nombre limité à 3 chiffres après la virgule (25.36 dans le cas présent) car je dois ensuite transformer ma feuille en fichier csv, fichier qui doit être importé dans un logiciel.
Or je me retrouve systématiquement avec bien trop de chiffres après la virgule, ou plutôt après mon point.
J'ai essayé la fonction Round, j'ai essayé de multiplier mon nombre par mille, de récupérer la partie entière dans un "integer", puis de placer dans un "single" ce nombre divisé par mille.
Mais lorsque j'inscris mon nombre final dans ma cellule de destination, c'est à chaque fois le même problème : j'obtiens 25.3600006103516 ... (ou une variante selon l'approche de calcul)
Voici mon dernier code, que j'ai fini par décomposer au maximum pour tenter de comprendre en phase débogage (désolé si c'est donc un peu lourd), mais cela ne change rien :
dim prix1, prix3 as single
dim prix2, j, ligne, colonne as integer
prix1 = Cells(ligne, colonne).Value
prix1 = prix1 * 1000
prix2 = Int(prix1)
prix3 = prix2 / 1000
Cells(j, 8).Value = prix3
Cells(j, 8).NumberFormat = "0.00"
Cells(j, 8).NumberFormat = "@"
Jusqu'ici, tout va bien, et j'obtiens un joli 25,36 dans ma cellule.
Mais dès la ligne suivante, c'est la cata...
Cells(j, 8).Value = Replace(Cells(j, 8).Value, ",", ".")
Avec un joli 25.3600006103516 comme résultat dans ma cellule !
D'après ce que j'ai pu lire, cela viendrait de la façon dont Excel stocke les nombres. Comment puis-je toutefois contourner le problème, à défaut de le résoudre ?