VBA : la fonction round fait n'importe quoi avec les 5

Bonjour,

J'ai effectué une macro afin de faire un arrondi et changer le format d'un nombre en fonction de sa valeur sur la plage sélectionné. (voir fichier joint)

Le problème vient quand il y a un 5 après la derniere décimale voulu :

-Normalement, quand il y a un 5 ça arrondi au supérieur (exemple : 11.15 devient 11.2 ou 11.25 devient 11.3)

- Or avec cette macro quand la dernière décimale voulu est un nombre pair il fait arrondi à l'inférieur et avec un nombre impair il fait arrondi au supérieur (exemple : 11.15 devient 11.2 ou 11.25 devient 11.2). Cette logique m'échappe totalement.

Je vous joint mon fichier avec en D : les nombres avant la macro ; en E : ce que je suis sensé avoir ; en F le résultat rendu par la macro.

21test-arrondi.xlsm (15.85 Ko)

Je vous laisse essayer ça, mais je trouve cela très étrange... Si vous avez une solution à ce problème critique je suis preneur.

Merci beaucoup

Adrien

Bonjour,

la fonction vba round utilise l'algorithme de l'arrondi du banquier (bankers rounding, 0.5 arrondi à l'inférieur quand impair et arrondi au supérieur quand pair)

Microsoft conseille d'utiliser worksheetfunction.round pour un arrondi "normal", tu peux aussi te faire ta propre fonction arrondi ou si l'affichage du nombre arrondi te suffit, tu mets simplement la cellule au format qui te convient et tu ne fais pas l'arrondi.

Bonjour h2so4,

Merci pour cette reponse simple et efficace, je trouvais cela très étrange mais maintenant tout roule !

J'avais vraiment besoin de l'arrondi car ces valeurs sont utilisé dans des calculs (et elle doivent être arrondi)

Encore merci

Bonne soirée

Bonjour

Tu méconnais les règles d'arrondi

  • L'arrondi de 4444 ne peut être 4445 : c'est un entier donc un chiffre rond et tu veut lui ajouter une unité
  • Idem pour 444
  • 44,400 est en dessous d'1/2 unité donc est correctement arrondi à 44,4
  • etc

Il existe dans Excel la fonction Arrondi.au.multiple plus adaptée à ce que tu cherches à faire

Rechercher des sujets similaires à "vba fonction round fait importe quoi"