Astuce VBA - remplacement fonction Round()

Résolu
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais créer une astuce VBA concernant les erreurs d'arrondi avec Round()

En effet :

La fonction Round() donne un mauvais arrondi pour les nombres de la forme (2a + 0,5) x 10^-n (arrondis à l'inférieur !!!).
Par contre, les nombres de la forme (2a - 0,5) x 10^-n sont normalement arrondis au supérieur.

Par exemple :

Round(0.15 , 1) = 0.2
Round(0.25 , 1) = 0.2
Round(0.35 , 1) = 0.4
Round(0.45 , 1) = 0.4

La fonction Arrondi proposée ci dessous ne présente pas cette anomalie :

Arrondi(0.15 , 1) = 0.2
Arrondi(0.25 , 1) = 0.3
Arrondi(0.35 , 1) = 0.4
Arrondi(0.45 , 1) = 0.5



Private Function Arrondi(ByVal Nombre, ByVal Decimales)

  Arrondi = Int(Nombre * 10 ^ Decimales + 1 / 2) / 10 ^ Decimales

End Function



Cordialement
Patrice



1 réponse

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Astuce... astucieuse.
Cette fonction n'étant pas disponnible en VBA.
Note : valable également pour tout les VB, 6, net.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
1
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bien que je n'aime pas de créer une astuce proposée par un autre membre, tu peu voir ton astuce ici
Pour ne pas qu'elle tombe aux oubliettes (comme dit Lami20J )
Cordialement.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Merci de cette publication

Cordialement
Patrice
0