Astuce VBA - remplacement fonction Round()

Résolu
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 11 août 2010 à 23:33
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 12 août 2010 à 17:51
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 12/08/2010 à 11:39
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
12 août 2010 à 16:57
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
12 août 2010 à 17:51
Merci de cette publication

Cordialement
Patrice
0