Si "cond" vaut "LT", "GE", ... la condition n'est pas réalisée !
Ben ça correspond bien à ton énoncé de départ... Par contre ça ne correspond pas à ton code
De toutes façons j'ai l'impression qu'il y a un problème de logique dans ton code... Une condition comme ça :
sera forcément toujours vraie (sauf si A = B), car X ne peut pas être égal à la fois à A et à B, et sera donc forcément différent de l'un des deux.
Reprenons ta condition sous forme de texte :
le mot n'est pas "LT", "LE", EQ", "NE", "GE", ou "GT"
La condition opposée est donc :
le mot est "LT", "LE", EQ", "NE", "GE", ou "GT"
Qui se traduit en VB par :
(cond = "LT") Or (cond = "LE") or (cond = "EQ") or (cond = "NE") or (cond = "GE") or (cond = "GT")
Et donc ce que tu veux, c'est la négation de cette condition :
Not((cond = "LT") Or (cond = "LE") or (cond = "EQ") or (cond = "NE") or (cond = "GE") or (cond = "GT"))
En appliquant le théorème de Morgan, ça peut aussi s'écrire :
(cond <> "LT") And (cond <> "LE") And (cond <> "EQ") And (cond <> "NE") And (cond <> "GE") And (cond <> "GT")
D'autre part, il vaut mieux en général utiliser les opérateurs AndAlso et OrElse plutôt que And et Or :
- avec AndAlso, si la condition de gauche n'est pas vraie, celle de droite n'est pas évaluée (ce n'est pas nécessaire car si une seule est fausse, toute la condition est fausse)
- avec OrElse, si la condition de gauche est vraie, celle de droite n'est pas évaluée (ce n'est pas nécessaire puisqu'il suffit qu'une seule soit vraie)
Partager