Est-ce que quelqu'un peut m'expliquer pourquoi la fonction round() dans une feuille de calcul est bien régie par la règle de l'arrondi mathématique alors que le round() en vba ne l'est pas?

je m'attendais a ce que les deux fonctionnent exactement de la meme facon mais ca n'est pas le cas et je ne comprend pas du tout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Cells(1, 1) = WorksheetFunction.Round(0.5, 0)
Donne 1, ce qui me semble le comportement normal et attendu (c'est a dire l'arrondi mathématique, si la décimale est <5 on arrondi a l'inférieur, si c'est >=5 on arrondi au supérieur)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Cells(1, 2) = Round(0.5, 0)
donne 0

pire encore, si on fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Cells(1, 1) = WorksheetFunction.Round(0.5, 0)
Cells(1, 2) = Round(0.5, 0)
Cells(2, 1) = WorksheetFunction.Round(1.5, 0)
Cells(2, 2) = Round(1.5, 0)
Cells(3, 1) = WorksheetFunction.Round(2.5, 0)
Cells(3, 2) = Round(2.5, 0)
Cells(4, 1) = WorksheetFunction.Round(3.5, 0)
Cells(4, 2) = Round(3.5, 0)
on constate que 1,5 et 3,5 sont arrondi "correctement" a 2 et a 4


est-ce que quelqu'un a la moindre explication pour ce comportement farfellu?