Astuce VBA - remplacement fonction Round()

Résolu
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8400 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



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

1 réponse

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Merci de cette publication

      Cordialement
      Patrice
      0