Les opérateurs
Objectifs du chapitre
Il existe de nombreux mots-clés en VBA, les opérateurs sont parmi ceux qu’il vous faudra utiliser le plus fréquemment. Qu’ils servent pour effectuer des opérations numériques, des tests ou encore comparer les valeurs entre elles, ces symboles et mots-clés sont importants à comprendre. Ce chapitre vous explique ainsi les principaux opérateurs, selon leur fréquence d’emploi, mais également leurs priorités les uns par rapport aux autres.
En fin de chapitre, vous trouverez une série d’exercices pour vous entraîner.
Opérateur d’affectation =
Vous avez déjà pu voir à plusieurs reprises cet opérateur « égal » = qui permet d’affecter une valeur à une variable.
Lorsqu’il s’agit d’une affectation, l’élément à gauche va prendre la valeur de l’élément à droite de l’opérateur =.
Lorsqu’il s’agit d’un test pour une condition, l’opérateur sert à tester l’égalité, comme vous allez le voir dans la section suivante.
Opérateurs arithmétiques
Lorsqu’il s’agit d’effectuer des calculs sur des valeurs numériques, vous pensez instinctivement aux quatre symboles des opérations sur vos claviers ou calculatrices (+ - * /) mais ce ne sont pas les seuls opérateurs existants pour travailler avec les valeurs numériques.
Les opérateurs de base
Commençons par les quatre opérateurs de base qui sont utilisés de la même façon qu’en mathématiques. Dans chaque exemple le résultat obtenu est indiqué à la suite de l’opération.
L’addition +
Le symbole + permet simplement d’additionner deux valeurs entre elles.
1 + 1 = 2
La soustraction -
Le symbole - permet de soustraire deux valeurs entre elles.
8 - 3 = 5
La multiplication *
Le symbole « étoile » ou « astérisque » * permet de multiplier deux valeurs entre elles.
25 * 6 = 150
La division /
Le symbole « barre (de division) » ou « barre oblique » / permet de diviser deux valeurs entre elles. À noter que le type de données que vous divisez n’a pas d’impact sur le type de données du résultat.
15 / 6 = 2.5
Les opérations mathématiques suivent les mêmes règles que dans la vie réelle, il n’y a pas de règles en plus....
Opérateurs de comparaison
Lorsqu’il s’agit de comparer deux valeurs entre elles, plusieurs opérateurs sont disponibles. Lorsque vous effectuez une comparaison, le résultat obtenu sera un booléen, qui vous indiquera si la comparaison est vraie ou fausse. Dans chacun des cas suivants, le premier exemple sera vrai et le second faux.
Strictement supérieur à >
5>3
5>10
Supérieur ou égal à >=
5>=5
5>=6
Strictement inférieur à <
5<10
8<4
Inférieur ou égal à <=
5<=10
8<=4
Égal à =
5=5
8=4
Différent de <>
5<>6
4<>4
Opérateurs Like et Is
Il existe deux autres opérateurs de comparaison. L’opérateur Like sert pour les comparaisons de chaînes de caractères, voir le chapitre Manipuler les chaînes de caractères. Quant à l’opérateur Is, il permet de comparer des objets entre eux.
Opérateurs de logique ou opérateurs booléens
Lorsque vous effectuez des comparaisons, vous pouvez avoir besoin d’avoir des combinaisons de plusieurs opérations. Les opérateurs de logique permettent de valider deux valeurs booléennes.
La syntaxe générale de ces opérateurs est la suivante :
Valeur1 operateur Valeur2
Cette expression retourne un booléen.
Vous allez découvrir pour chacun de ces opérateurs une table de vérité. La valeur 1 signifie Vrai, 0 signifie Faux.
Opérateur ET - And
L’opérateur And permet de valider que deux valeurs sont vraies.
Valeur1 |
Valeur2 |
Valeur1 And Valeur2 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Opérateur OU - Or
L’opérateur Or permet de valider qu’au moins l’une des deux valeurs est vraie.
Valeur1 |
Valeur2 |
Valeur1 Or Valeur2 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Opérateur NON - Not
L’opérateur Not permet d’inverser la valeur d’un booléen.
Valeur1 |
Not Valeur1 |
1 |
0 |
0 |
1 |
Opérateur OU EXCLUSIF - Xor
L’opérateur Xor permet de valider qu’une seule des deux valeurs est vraie.
Valeur1 |
Valeur2 |
Valeur1 Xor Valeur2 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Priorité des opérateurs
Lorsque vous programmez une ligne qui comporte plusieurs opérateurs, il est important de savoir dans quel ordre VBA effectue les opérations.
Si votre expression comporte des parenthèses, les expressions à l’intérieur de ces parenthèses seront calculées en priorité.
Si votre expression comporte des opérateurs arithmétiques, ils seront traités en priorité, selon l’ordre suivant : ^ * / \ mod + puis -.
Les lignes suivantes aboutissent au même résultat pour VBA :
'Cas 1
5 * 3 + 1
15 + 1 'la multiplication est prioritaire sur la somme
16
'Cas 2
2 ^ 3 Mod 5 * 2
8 Mod 5 * 2 'la puissance est prioritaire sur les autres opérateurs
8 Mod 10 'La multiplication est prioritaire sur l'opérateur Mod
8
Exemple 1 : ordre de priorité des opérateurs numériques
Ensuite, si votre expression comporte des opérateurs de comparaison, ils sont traités à égale priorité et seront évalués dans leur ordre d’apparition dans l’expression, c’est-à-dire de la gauche vers la droite.
Enfin, si votre expression comporte des opérateurs logiques, ils seront traités dans l’ordre suivant : Not, puis And, Or et enfin Xor :
'Cas...
Exercices
Opérateurs arithmétiques
Opérations de base
Écrivez une fonction Addition, de portée publique, de type numérique entier.
Cette fonction prend deux paramètres de type numérique entier, nommés A et B.
La fonction retourne la somme des valeurs A et B.
Écrivez ensuite une fonction Soustraction, de portée publique, de type numérique entier.
Cette fonction prend deux paramètres de type numérique entier, nommés A et B.
La fonction retourne la différence entre les valeurs A et B.
Créez une macro AfficherAdditionPuisSoustraction.
Dans cette macro, déclarez deux variables de type numérique entier, nommées valeur1 et valeur2 et affectez à ces variables les valeurs respectives 10 et 12.
La macro devra ensuite afficher le résultat renvoyé par la fonction Addition, en lui passant les valeurs valeur1 et valeur2.
La macro devra également afficher le résultat renvoyé par la fonction Soustraction, en lui passant les valeurs valeurs1 et valeurs 2.
Exécutez la macro AfficherAdditionPuisSoustraction.
Les valeurs affichées seront 22 et -2.
Division euclidienne
Écrivez une procédure Decomposition, de portée publique.
Cette procédure prend en paramètres deux valeurs numériques entières, nommées Valeur et Diviseur.
La procédure affichera le résultat de la division entière de Valeur par Diviseur, puis affichera le reste de la division entière.
Créez une macro DeclencherDecomposition.
Cette macro fera appel à la procédure Decomposition, en lui fournissant les valeurs 10 et 3.
Exécutez la macro DeclencherDecomposition.
Les valeurs affichées seront 3 et 1.