XL 2019 Soucis avec la fonction Int en VBA

Drxl

XLDnaute Nouveau
Bonjour,
Je dois transposer des macros Excel sous C# et vérifier que les résultats sont identiques
Seulement j'ai un soucis avec une fonction très simple : "Int"
D'apres ce que j'en ai compris, la fonction Int renvoie l'entier inférieur le plus proche :
Int(88,1) = 88
Int(88.9) = 88
ce qui correspondrait sous c# à Math.Floor()

Mon soucis vient d'un comportement de la fonction "Int" que je ne comprend pas
Pour vous montrer mon problème, j'utilise dans la windows "Immediate"

?(150+7.3)*10
1573

?Int((150+7.3)*10)
1572

?Int(1573)
1573

Je ne comprends pas pourquoi j'obtiens 1572 avec "?Int((150+7.3)*10)"

Par avance, merci de m’éclairer.
PS : le fichier excel n'est pas modifiable, je dois comprendre sa manière de focntionner pour le transposer en c#
 
Dernière édition:
Solution
j'ai quand même remarqué que Cint(1.9) retourne 2 alors que INT(1.9) retourne 1!

utilise ça c'est un convertisseur VB.net C# à quelque exception près il devrait donné satisfaction!
1631618778748.png

mapomme

XLDnaute Barbatruc
Supporter XLD
propension de vba à chercher à évaluer à la compilation, en tant que constantes les expressions composées exclusivement de constantes.
Maintenant que tu l'écris, j'ai effectivement déjà rencontré des comportement étranges avec des expressions constituées uniquement de constantes. Je m'étais dit à l'époque que VBA devait attribuer des types implicites (entier ou non et pas connus d’avance) aux différents termes de l'expression pendant l'évaluation de la formule et que ceci pouvaient justifier un résultat étrange. Je n'avais pas creusé plus que ça.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki