Comparaison de deux codes

Bonjour,

Dans le fichier ci-joint, j'ai deux possibilités de code qui, selon moi, devrait donner exactement le même résultat :

a = WorksheetFunction.Sum(Range("C16:C19"))
b = Range("B4")
If a <> b Then

et

If WorksheetFunction.Sum(Range("C16:C19")) <> Range("B4") Then

Cependant, le premier code fonctionne parfaitement alors que le deuxième ne fourni pas le résultat désiré (la condition testée est considérée comme remplie alors qu'elle ne devrait pas l'être et la MsgBox est affichée incorrectement)

Savez-vous pourquoi ?

Cordialement

11demo-24-03.zip (20.07 Ko)

Bonjour Yvouille,

Yvouille a écrit :

Cependant, le premier code fonctionne parfaitement alors que le deuxième ne fourni pas le résultat désiré (la condition testée est considérée comme remplie alors qu'elle ne devrait pas l'être et la MsgBox est affichée incorrectement)

Je pense que tu t'est trompé dans ton exposé..

If a <> b then ... Condition remplie alors que a=b (0,6 tout les deux)

Et même résultat pour le test 2

C'est effectivement un bug que je n'avais jamais eu l'occasion de rencontrer, ce n'est pas dû à la fonction W.sum le résultat est le même avec une fonction Somme dans la feuille, pas le pourcentage non plus, j'ai remis les mêmes valeurs dans une autre colonne et résultat toujours erroné.

Ce n'est pas la déclaration des variables non plus, W.sum renvoi un double et j'ai tester avec des double, forcer b en double etc..

La seule façon que j'ai trouvé pour que ça fonctionne c'est de les transformer en string ce qui n'est certainement pas le but rechercher.

Cordialement

Bonjour,

C'est un bug assez pénible que j'avais déjà rencontré dans une autre situation ...

Ajoute ces quelques MsgBox de test pour comprendre ce qui bug ici (2) et résoudre le problème (3) :

MsgBox a - b '1
MsgBox WorksheetFunction.Sum(Range("C16:C19")) - Range("B4") '2
MsgBox Round(WorksheetFunction.Sum(Range("C16:C19")), 2) - Range("B4") '3

Cordialement,

Salut Sébastien et merci pour ta démonstration. J’espère m’en souvenir la prochaine fois que je tombe sur un os de ce genre.

Salut et merci à toi aussi Lermite de t’être penché sur mon problème. Je pense par contre que tu t'est trompé dans ton exposé

If a <> b then ... Condition pas remplie puisque que a=b. La condition serait remplie si a était différent de b, non ?

Merci encore et bonnes salutations à tous deux.

Rechercher des sujets similaires à "comparaison deux codes"