Fonction arrondi VBA à 2 digits
3 réponses
Bonjour,
tout est incohérent dans ton message, sit tu arrondies à 2 digits alors il y a 2 chiffres dérrière la virgule.
Dans ton premier exemple il y en a 1 et dans le second 4.
Deplus tes deux exemples montrent, non un arrondi ou le n+1ieme digit vaut 5 ou plus alors l'arrondis est au supérieur:
2.354 => 2.4
0.002365 => 0.0024...
Ce que tu montres c'est tronquer.
DOnc formule bien ta question pour avoir une réponse qui te convienne.
En attendant tu peux regarder Round() et Trunc(). (Sais plus si elles existent en VBA)
tout est incohérent dans ton message, sit tu arrondies à 2 digits alors il y a 2 chiffres dérrière la virgule.
Dans ton premier exemple il y en a 1 et dans le second 4.
Deplus tes deux exemples montrent, non un arrondi ou le n+1ieme digit vaut 5 ou plus alors l'arrondis est au supérieur:
2.354 => 2.4
0.002365 => 0.0024...
Ce que tu montres c'est tronquer.
DOnc formule bien ta question pour avoir une réponse qui te convienne.
En attendant tu peux regarder Round() et Trunc(). (Sais plus si elles existent en VBA)
Bon déjà on parle bien d'arrondi.
Maintenant, 2 chiffres significatifs ça veut dire 2 chiffres derrière la virgule.
Ce n'est toujours pas ce que montrent tes deux exemples.
On va essayer.....
Par contre je n'ai pas traité le cas ou un nombre a moins de 2 décimlaes
Maintenant, 2 chiffres significatifs ça veut dire 2 chiffres derrière la virgule.
Ce n'est toujours pas ce que montrent tes deux exemples.
On va essayer.....
Function ArrondiSimdup(Valeur As Double)
Dim posPoint As Integer
Dim nbrDecimales As Integer
Dim val As String
val = CStr(Valeur) 'on passe en string sinon len() ne donne pas le bon résultat
posPoint = InStr(val, ".") 'à quel carractère se trouve le point
nbrDecimales = Len(val) - posPoint 'nombre de chiffres derrière le point
ArrondiSimdup = Round(Valeur, nbrDecimales - 2) 'arrondi à 2 chiffres de moins qu'existant
End Function
Par contre je n'ai pas traité le cas ou un nombre a moins de 2 décimlaes
Bonjour,
La notation ingénieur te permet d'avoir exactement deux chiffres significatifs, mais il y a les puissances de 10 qui apparaissent.
Mais ça m'a donné l'idée d'utiliser le log en base 10...
Sans VBA et par formule, en Excel anglais, ça donne :
=ROUND(A1/POWER(10;INT(LOG10(A1)));1)*POWER(10;INT(LOG10(A1)))
Je pense que les deux seules fonctions de base à traduire sont :
ROUND : ARRONDI
POWER : PUISSANCE
A+
La notation ingénieur te permet d'avoir exactement deux chiffres significatifs, mais il y a les puissances de 10 qui apparaissent.
Mais ça m'a donné l'idée d'utiliser le log en base 10...
Sans VBA et par formule, en Excel anglais, ça donne :
=ROUND(A1/POWER(10;INT(LOG10(A1)));1)*POWER(10;INT(LOG10(A1)))
Je pense que les deux seules fonctions de base à traduire sont :
ROUND : ARRONDI
POWER : PUISSANCE
A+