Astuce VBA - remplacement fonction Round()

Résolu
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



--
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »

1 réponse

  1. Contributeur
    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
    1. Contributeur
      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
    2. Merci de cette publication

      Cordialement
      Patrice
      0