Problème avec la fonction "Evaluate"

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Dans ma feuille je veux savoir si une valeur est supérieure à une autre de référence.
Si c'est le cas, dans une 3ème cellule apparaît "OUI".
Si ce n'est pas le cas, apparaîtra alors "NON".

J'ai rédigé une petite fonction qui résoud le problème. Curieusement elle ne fonctionne que si la valeur de référence est un entier. Si elle est décimale, ça plante et je me demande bien pourquoi.

VB:
Function Kontrol(num As Variant, opérateur As String, x As Variant) As Variant

    Kontrol = IIf(Evaluate(num & opérateur & x), "OUI", "NON")
    'Kontrol = IIf(Evaluate(CDbl(num) & opérateur & CDbl(x)), "OUI", "NON") 'marche pas

End Function

Merci d'avance pour toute aide.
 

Pièces jointes

  • Evaluate.xlsm
    23.5 KB · Affichages: 35
  • Evaluate.xlsm
    23.5 KB · Affichages: 37
  • Evaluate.xlsm
    23.5 KB · Affichages: 36

Magic_Doctor

XLDnaute Barbatruc
Re : Problème avec la fonction "Evaluate"

Problème réglé.

La fonction "Evaluate" n'accepte que des chaînes. Les décimales saisies en autre chose qu'en Anglo-Saxon comportent une ",", alors que chez les Anglo-Saxons c'est un ".". VBA raisonne en Anglo-Saxon, donc, pour les numéros transformés en chaînes, il faudra au paravant substituer la "," par un ".".

VB:
Function Kontrol(num As Variant, opérateur As String, x As Variant) As Variant

    Dim n As String, o As String
    
    n = Replace(num, ",", "."): o = Replace(x, ",", ".")
    
    Kontrol = IIf(Evaluate(n & opérateur & o), "OUI", "NON")
    
End Function
 

Pièces jointes

  • Evaluate 2.xlsm
    23.9 KB · Affichages: 23

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 222
Messages
2 086 394
Membres
103 200
dernier inscrit
pascalgip