Les opérateurs en VBA : arithmétiques, comparaison, Like, And et Or
Les opérateurs combinent des valeurs pour calculer, comparer ou tester. Les opérateurs arithmétiques (+ - * / \ Mod ^) produisent un nombre. Les opérateurs de comparaison (= <> < <= > >=) et Like produisent Vrai ou Faux. Les opérateurs logiques (And, Or, Not) assemblent plusieurs conditions. Chaque simulateur évalue l’expression comme VBA : ordre de priorité, type du résultat, erreurs de dépassement ou de type. Ces opérateurs sont au cœur des conditions If et Select Case et des boucles.
Les opérateurs arithmétiques
VBA connaît les quatre opérations +, -, * (multiplication) et / (division), plus trois opérateurs propres aux entiers et aux puissances : \ (division entière), Mod (reste de la division entière) et ^ (puissance). Quand une expression en contient plusieurs, VBA applique un ordre de priorité : ^, puis le signe moins, puis * et /, puis \, puis Mod, enfin + et -. À priorité égale, le calcul se fait de gauche à droite. Le type du résultat dépend des opérandes : deux Integer donnent un Integer, ce qui peut provoquer un dépassement de capacité.
| Opérateur | Rôle | Exemple | Résultat |
|---|---|---|---|
+ | Addition | 17 + 5 | 22 |
- | Soustraction, ou signe moins | 17 - 5 | 12 |
* | Multiplication | 17 * 5 | 85 |
/ | Division (résultat Double) | 17 / 5 | 3,4 |
\ | Division entière | 17 \ 5 | 3 |
Mod | Reste de la division entière | 17 Mod 5 | 2 |
^ | Puissance | 2 ^ 10 | 1024 |
If i Mod 2 = 0 Then repère une ligne paire ; minutes Mod 60 donne les minutes restantes après les heures entières (minutes \ 60).Dim n As Integer ne dépasse pas 32 767. Déclarez vos compteurs et totaux en Long ou Double, et convertissez un opérande avec CLng si besoin.&. + additionne ou concatène selon les types, ce qui donne des résultats inattendus avec des cellules au format texte.Les opérateurs de comparaison
Une comparaison renvoie True (Vrai) ou False (Faux). Elle s’écrit dans un If, un Do While ou s’affecte à une variable Boolean. Attention au signe égal : a = b compare dans une condition, mais affecte une valeur en début d’instruction. Entre deux textes, VBA compare caractère par caractère selon l’ordre des codes : « 10 » est donc inférieur à « 9 », et « Excel » différent de « excel », sauf avec Option Compare Text en tête de module.
| Opérateur | Signification | Exemple |
|---|---|---|
> | Supérieur à | score > 725 |
>= | Supérieur ou égal à | score >= 551 |
< | Inférieur à | montant < 1000 |
<= | Inférieur ou égal à | nb <= 12 |
= | Égal à | formation = "Excel" |
<> | Différent de | Cells(i, 1).Value <> "" |
Trim avant de comparer : If Trim(Cells(i, 1).Value) = "Word" Then.If UCase(nom) = "EXCEL" Then.L’opérateur Like
texte Like "motif" vérifie qu’un texte respecte un modèle et renvoie Vrai ou Faux. Le motif utilise des caractères génériques : ? remplace un caractère, * zéro ou plusieurs caractères, # un chiffre, [A-Z] un caractère d’une liste ou d’une plage, [!0-9] un caractère absent de la liste. Like sert à contrôler un format (code article, référence, code postal) ou à filtrer des lignes. Il respecte la casse, sauf avec Option Compare Text.
| Caractère | Correspond à | Exemple vrai |
|---|---|---|
? | Un caractère quelconque | "Word" Like "W?rd" |
* | Zéro, un ou plusieurs caractères | "PowerPoint" Like "Pow*" |
# | Un chiffre de 0 à 9 | "75011" Like "#####" |
[liste] | Un caractère de la liste ou de la plage | "B12" Like "[A-C]##" |
[!liste] | Un caractère absent de la liste | "X1" Like "[!A-C]#" |
*, ?, # ou [, placez-le entre crochets : texte Like "*[*]*" repère un astérisque.InStr(texte, "Excel") > 0 cherche une sous-chaîne ; Like vérifie la forme complète du texte, du premier au dernier caractère.Les opérateurs logiques And, Or et Not
And (ET) est vrai seulement si les deux conditions sont vraies. Or (OU) est vrai si au moins une condition est vraie. Not inverse une condition. Ils permettent d’écrire une seule condition à la place de plusieurs If imbriqués : If score >= 551 And financement = "CPF" Then. Les comparaisons sont évaluées avant les opérateurs logiques, et And passe avant Or : utilisez des parenthèses dès que vous mélangez les deux.
If b <> 0 And a / b > 100 plante quand b vaut 0. Imbriquez deux If : If b <> 0 Then If a / b > 100 Then …(score >= 551 And financement = "CPF") Or urgent = "Oui" : les parenthèses rendent l’intention lisible et évitent les erreurs de priorité.Exercice : calculer, contrôler des codes et filtrer des stagiaires
Classeur d’exercice (Énoncé et Corrigé)
- Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard.
- Feuille Calculs : prévoyez le résultat de chaque expression, puis exécutez
Calculerpour vérifier. - Feuille Codes : exécutez
VerifierCodes(Like) et comptez les codes valides. - Feuille Stagiaires : exécutez
Eligibles(And, Or) et comptez les stagiaires retenus. - Répondez aux questions de la feuille Contrôle.