VBA logique OperaTors : ET, OU, NON, SI NON dans Excel VBA

⚡ Résumé intelligent

VBA logique OperaLes opérateurs ET, OU et NON combinent plusieurs conditions en un seul résultat Vrai ou Faux. Cette page explique les opérateurs ET, OU et NON avec des exemples de boutons de commande exécutables, une table de vérité complète et les opérateurs moins connus XOR, Eqv et Imp.

  • 🔗 Objectif : Les opérateurs logiques évaluent plusieurs conditions au sein d'une seule instruction If.
  • ET Operator: Renvoie True uniquement lorsque toutes les conditions qu'il joint sont vraies.
  • OR Operator: Renvoie Vrai lorsqu'au moins une des conditions est vraie.
  • (I.e. pas Operator: Inverse un résultat, transformant Vrai en Faux et Faux en Vrai.
  • (I.e. Table de vérité: Une seule grille de référence affiche le résultat de chaque opérateur pour chaque combinaison d'entrée.
  • 🧮 Extra Operateurs : Xor, Eqv et Imp gèrent les conditions exclusives, équivalentes et implicites.
  • ⚠️ Pas de court-circuit : VBA évalue chaque partie d'une condition, donc un test de garde doit être placé dans une instruction If imbriquée.

VBA logique Operaopérateurs : ET, OU, NON dans Excel VBA

Excel VBA logique Operajeudi

Disons que vous souhaitez traiter une commande client. Pour cela, vous souhaitez d’abord vérifier si le produit commandé existe ou non. Si tel est le cas, vous souhaitez également vérifier si la quantité disponible est suffisante. Les opérateurs logiques sont utiles dans de tels cas. Les opérateurs logiques sont utilisés pour évaluer plusieurs conditions.

Chaque condition est construite individuellement à partir de opérateurs de comparaison et renvoie Vrai ou Faux. Un opérateur logique combine ensuite ces résultats en une réponse finale.

Les principaux opérateurs logiques Excel VBA AND, OR, NOT sont répertoriés dans le tableau ci-dessous :

Ratio S / N Opérateur Description Exemple Sortie
1 ET AND : Ceci est utilisé pour combiner plusieurs conditions. Si toutes les conditions sont vraies, AND est évalué comme vrai. Si l'une des conditions est fausse, AND est évalué comme faux Si (1 = 1) et (0 = 1), alors non
2 OR OU : Ceci est utilisé pour combiner plusieurs conditions. Si l’une des conditions est vraie, OR renvoie vrai. Si tous sont faux, OR renvoie faux Si (1 = 1) ou (5 = 0) alors oui
3 pas NON : Celle-ci fonctionne comme une fonction inverse. Si la condition est vraie, elle renvoie faux, et si une condition est fausse, elle renvoie vrai. Si non (0 = 0) alors non

Il est plus facile de retenir les trois descriptions ci-dessus sous la forme d'une grille unique d'entrées et de résultats.

Table de vérité pour la logique VBA Operajeudi

Une table de vérité répertorie toutes les combinaisons d'entrées et le résultat renvoyé par chaque opérateur. Sa lecture unique élimine toute incertitude lors de l'écriture ultérieure d'une condition.

État A État B A et B A ou B Pas un
Vrai Vrai Vrai Vrai Faux
Vrai Faux Faux Vrai Faux
Faux Vrai Faux Vrai Vrai
Faux Faux Faux Faux Vrai

Deux schémas méritent d'être mémorisés. ET Le résultat est « Vrai » sur une seule ligne sur quatre, ce qui restreint la sélection. OR Le résultat est faux sur une seule ligne, donc il en élargit une. pas Elle ne requiert qu'une seule condition au lieu de deux, c'est pourquoi elle possède sa propre colonne.

VBA logique OperaExemple de source de tors Code

Par souci de simplicité, nous comparerons des nombres codés en dur.

Ajoutez des boutons ActiveX à la feuille à partir de « l’option Insérer ».

Définissez les propriétés comme indiqué dans l'image ci-dessous

VBA logique Operajeudi
VBA logique Operajeudi

Le tableau suivant présente les propriétés que vous devez modifier et les valeurs que vous devez également mettre à jour.

Ratio S / N Contrôle Propriétés Valeur
1 Bouton de commande1 Nom btnAND
Légende ET Operator (1 = 1) Et (0 = 0)
2 Bouton de commande2 Nom btnOR
Légende OR Operator (1 = 1) Ou (5 = 0)
3 Bouton de commande3 Nom btnPAS
Légende pas Operapour Non (0 = 0)

Ajoutez le code suivant à btnAND_Click

Private Sub btnAND_Click()
If (1 = 1) And (0 = 0) Then
    MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator"
Else
    MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator"
End If
End Sub

VBA Si ET Operator

  • "Si (1 = 1) et (0 = 0) alors" l'instruction if utilise l'opérateur logique AND pour combiner deux conditions (1 = 1) Et (0 = 0). Si les deux conditions sont vraies, le code situé au-dessus du mot-clé « Else » est exécuté. Si les deux conditions ne sont pas vraies, le code sous le mot-clé « Else » est exécuté.

Les deux conditions sont vraies ici, donc cliquer sur le bouton affiche « ET évalué à VRAI ».

Ajoutez le code suivant à btnOR_Click

Private Sub btnOR_Click()
If (1 = 1) Or (5 = 0) Then
    MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator"
Else
    MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator"
End If
End Sub

VBA Si OU Operator

  • "Si (1 = 1) Ou (5 = 0) Alors" L'instruction if utilise l'opérateur logique OU pour combiner deux conditions : (1 = 1) OU (5 = 0). Si l'une des conditions est vraie, le code situé avant le mot-clé else est exécuté. Si les deux conditions sont fausses, le code situé après le mot-clé else est exécuté.

La première condition est vraie et la seconde est fausse, donc l'opérateur OU renvoie toujours vrai et le message indique « OU évalué à VRAI ».

Ajoutez le code suivant à btnNOT_Click

Private Sub btnNOT_Click()
If Not (0 = 0) Then
    MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator"
Else
    MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator"
End If
End Sub

VBA Si NON Operator

  • "Si non (0 = 0) alors" La fonction VBA `If Not` utilise l'opérateur logique `NOT` pour inverser le résultat de la condition de l'instruction `if`. La condition interne (0 = 0) étant vraie, `NOT` la transforme en fausse et le code situé après le mot-clé `Else` est exécuté. Si la condition interne avait été fausse, `NOT` l'aurait rendue vraie et le code situé avant `Else` aurait été exécuté.

Ces trois boutons testent chacun une valeur fixe. Les conditions réelles sont lues à partir de la feuille de calcul et combinent les deux familles d'opérateurs.

Comment combiner logique et comparaison Operajeudi

Une macro de production teste rarement une valeur fixe. Elle lit une valeur, la compare et combine plusieurs de ces comparaisons pour prendre une décision unique. La macro ci-dessous approuve une commande uniquement si le produit existe, si la quantité est suffisante et si le compte client n'est pas bloqué.

Sub ApproveOrder()
    Dim QtyOnHand As Long
    Dim QtyOrdered As Long
    Dim OnHold As Boolean

    QtyOnHand = Sheet1.Range("B2").Value
    QtyOrdered = Sheet1.Range("B3").Value
    OnHold = Sheet1.Range("B4").Value

    ' All three parts must hold for the order to pass
    If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then
        Sheet1.Range("B5").Value = "Approved"
    Else
        Sheet1.Range("B5").Value = "On hold"
    End If
End Sub

Trois règles permettent de garantir la lisibilité et l'exactitude d'une condition combinée.

  • Mettez chaque comparaison entre parenthèses : VBA évalue les opérateurs de comparaison avant les opérateurs logiques, mais les parenthèses rendent le groupeping Cela permet d'être évident et d'éviter une erreur lorsque la situation s'aggravera par la suite.
  • Respectez la priorité de « Et » sur « Ou » : A ou B et C se lit comme A ou (B et C)Si vous vouliez dire… (A ou B) et C, les parenthèses sont obligatoires.
  • Appliquer la valeur « Non » à un booléen, et non à un nombre : Pas en attente se lit naturellement. Évitez Pas 5, car Not effectue une opération bit à bit sur les nombres et renvoie -6 plutôt que False.

⚠️ Attention : VBA ne provoque pas de court-circuit. Si (ws est vide) ou (ws.Name = « Données ») Alors, la deuxième partie s'exécute toujours même lorsque la première est vraie, ce qui provoque l'erreur d'exécution 91. Divisez ces gardes en instructions If imbriquées.

Xor, Eqv et Imp Operators en VBA

Les opérateurs ET, OU et NON couvrent la quasi-totalité des situations courantes, mais VBA propose trois opérateurs logiques supplémentaires qui permettent parfois d'exprimer une règle bien plus clairement qu'une imbrication d'instructions SI.

Opérateur Renvoie Vrai lorsque Exemple Sortie
Xor Une seule des deux conditions est vraie, jamais les deux. (1 = 1) Xor (5 = 0) Vrai
Éqv Les deux conditions ont la même valeur, soit toutes deux vraies, soit toutes deux fausses. (1 = 1) Éqv (2 = 2) Vrai
Lutin La première condition implique la seconde ; seule la condition Vrai Imp Faux est fausse (1 = 1) Imp (5 = 0) Faux

XOR est la plus pratique des trois. Elle convient à une règle comme « une réduction s'applique à un membre du personnel ou à un membre du programme de fidélité, mais pas à une personne qui est les deux ». Eqv et Imp apparaissent principalement dans les anciens codes et les exercices de logique ; il est donc plus important de les reconnaître que de les écrire.

Téléchargez Excel contenant le code ci-dessus

FAQ

Il n'y a pas de limite pratique, mais la lisibilité diminue rapidement au-delà de trois ou quatre. Déplacez une condition longue dans une variable booléenne avec un nom descriptif, puis testez cette variable dans l'instruction if.

Appliquée à un nombre, la fonction Not effectue une inversion binaire et non une inversion logique. Utilisez-la uniquement dans une comparaison ou avec une variable booléenne, comme Not (Qty > 0), pour obtenir un résultat Vrai ou Faux.

La logique est la même, mais la syntaxe diffère. Une formule de feuille de calcul les appelle comme des fonctions : ET(A1>0, B1>0). En VBA, elles sont placées entre les conditions, comme dans : Si A1 > 0 Et B1 > 0 Alors.

Oui. Collez la condition et un assistant IA la reformule avec des parenthèses plus claires ou la divise en variables booléennes nommées. Vérifiez la reformulation à l'aide d'une table de vérité, car une simplification erronée modifie le comportement sans que cela ne se produise.

Oui. Fournissez l'expression et un assistant IA liste chaque combinaison d'entrée avec son résultat, ce qui permet de repérer rapidement une branche inaccessible ou une parenthèse mal placée.

Résumez cet article avec :