Pour une fois que je trouvais ma réponse dans l'aide, je me retrouve le bec dans l'eau en choisissant d'utiliser une variable Currency.
L'aide dit :
Currency
(scaled integer) 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Soit clairement 4 chiffres possible après la virgule.
Tandis que :
Single
(single-precision floating-point) 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double
(double-precision floating-point) 8 bytes -1.79769313486231E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
Pourtant le code suivant arrondit au centiéme :
Dim t As Currency
t = 4.6144
MsgBox t
ActiveCell = t
Quant à celui-ci, il va carrément m'inventer des chiffres après le 4è !
Dim t As Single
t = 4.6144
MsgBox t
ActiveCell = t
'ActiveCell = Format(t, "0.000") 'renvoit 4 6144,000 !?
Le type double résout mon problème mais je n'y comprends rien O_0
Dim t As Double
t = 4.6144
MsgBox t
ActiveCell = t
L'aide dit :
Currency
(scaled integer) 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Soit clairement 4 chiffres possible après la virgule.
Tandis que :
Single
(single-precision floating-point) 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double
(double-precision floating-point) 8 bytes -1.79769313486231E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
Pourtant le code suivant arrondit au centiéme :
Dim t As Currency
t = 4.6144
MsgBox t
ActiveCell = t
Quant à celui-ci, il va carrément m'inventer des chiffres après le 4è !
Dim t As Single
t = 4.6144
MsgBox t
ActiveCell = t
'ActiveCell = Format(t, "0.000") 'renvoit 4 6144,000 !?
Le type double résout mon problème mais je n'y comprends rien O_0
Dim t As Double
t = 4.6144
MsgBox t
ActiveCell = t