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.

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

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
