VBA les instructions conditionnelles
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- La structure de contrôle If...Then...Else
- 3.1- La description
- 3.2- Syntaxe
- 3.3- Paramètres ou arguments
- 3.4- If...Else if...Else
- 4- La structure de contrôle Select Case
- 4.1- La description
- 4.2- Syntaxe
- 5- Les opérateurs de comparaison utilisables dans un test
- 6- Activités
- 6.1- Activité 01
- 6.2- Activité 02
- 6.3- Activité 03
- 6.4- Activité 04
- 6.4.1- Sommaire du cours Excel
VBA Les instructions conditionnelles
-
Objectifs
- Connaitre les instructions conditionnelles en VBA
-
Présentation
- Les instructions conditionnelles permettent d’exécuter une ligne de codes seulement dans certaines conditions.
- Une condition commence toujours par un SI (if en anglais).
- Pour faire une condition, il faut un critère de comparaison.
- Dans VBA, ce critère de comparaison est soit une valeur, une variable ou encore du texte. On compare les données d’une cellule à notre critère de comparaison et VBA renvoie VRAI si la comparaison est juste ou FAUX.
- Les instructions conditionnelles permettent de :
- S’assurer que l’environnement de l’application et l’état du document sont compatibles avec l’exécution du programme ;
- Modifier le comportement de la macro en fonction de l’état du document et de l’appli cation à un moment précis ;
- Échanger des informations avec l’utilisateur lors de l’exécution du programme (combinées avec la fonction MsgBox, par exemple).
-
La structure de contrôle If…Then…Else
-
La description
- L’instruction Microsoft Excel
IF-THEN-ELSE
ne peut être utilisée que dans le code VBA. Il exécute un ensemble de code si une condition spécifiée est évaluée à TRUE, ou un autre ensemble de code si elle est évaluée à FALSE. - L’instruction
IF-THEN-ELSE
est une fonction intégrée dans Excel classée en tant que fonction logique . Il peut être utilisé comme fonction VBA (VBA) dans Excel. En tant que fonction VBA, vous pouvez utiliser cette fonction dans le code de macro qui est entré via Microsoft Visual Basic Editor. -
Syntaxe
- La syntaxe de l’instruction IF-THEN-ELSE dans Microsoft Excel est la suivante:
- Lorsque la Condition spécifiée est remplie, la Série d’instructions est exécutée ; sinon, ces instructions sont ignorées et la procédure se poursuit avec l’instruction située immédiatement après l’instruction End If.
-
Paramètres ou arguments
- expression
- Les expressions ou les conditions à évaluer dans l’ordre indiqué. Une fois qu’une condition est trouvée vraie, le code correspondant sera exécuté. Aucune autre condition ne sera évaluée.
- instructions
- Code qui est exécuté une fois qu’une condition est jugée vraie.
- _else
- Le code qui est exécuté lorsque toutes les conditions précédentes ( condition1, condition2, … condition_n ) sont fausses.
-
If…Else if…Else
- Une structure If…Then…Else autorise un nombre de conditions indéterminé. Vous pouvez ainsi envisager les différents cas possibles dans une situation particulière et indiquer à la procédure les instructions à exécuter dans chacun de ces cas.
- L’instruction répond alors à la syntaxe suivante :
- Contrairement à ElseIf, l’instruction Else ne pose aucune condition : elle apparaît en dernière position et les instructions qui lui sont attachées sont automatiquement exécutées si aucune des conditions posées aupara vant n’a été réalisée.
- Par contre, si l’une des conditions posées par une instruction If ou ElseIf est réalisée, le programme exécute les instructions qui lui sont attachées, puis ignore les autres conditions posées et se poursuit avec les instructions situées après End If.
- Les instructions ElseIf comme Else sont facultatives. Une instruction conditionnelle peut être composée d’une ou de plusieurs instructions ElseIf et ne pas présenter d’instruction Else, et inversement.
- Une instruction conditionnelle peut aussi s’écrire e sur une seule ligne , en utilisant deux points (
:
) comme séparateurs entre les instructions à exécuter si la condition est vérifié. L’instruction End Ifest alors omise et la syntaxe est la suivante :If Condition Then Instruction1: Instruction2: ...: InstructionN
-
La structure de contrôle Select Case
-
La description
- La structure de contrôle Select Case permet d’envisager différentes valeurs pour une même expression et de déterminer des instructions spécifiques pour chaque cas envisagé.
- L’instruction
Select Case
permet d’exécuter une série d’instructions spécifiques différentes lors d’une validation. Cette instruction sélectionne les instructions VBA à exécuter selon la valeur d’une expression ou d’une variable. If
permet de construire des alternatives à deux branches ;Select
permet de construire des alternatives à branches multiples.-
Syntaxe
- où Expression est une expression renvoyant une valeur dont le type peut varier. Lorsque la valeur renvoyée par Expression correspond à l’une des valeurs posées par les instructions Case, les Instructions correspondantes s’exécutent, et la procédure se poursuit avec l’instruction qui suit End Select.
- Si aucune des valeurs posées par les instructions Case ne correspond à la valeur renvoyée par Expression, les instructions attachées à Case Else sont exécutées.
- L’utilisation de Case Else est facultative.
-
Les opérateurs de comparaison utilisables dans un test
- L’opérateur « = » n’est pas le seul utilisable dans un test If Then Else. Le tableau dresse la liste des opérateurs utilisables.
- Ces opérateurs peuvent être appliqués sur :
- des nombres (Byte, Integer, Long, Currency, Single ou Double) ;
- des chaînes (String) ;
- des dates (Date).
-
Activités
-
Activité 01
- Soit l’équation du second degré
ax2 + bx + c = 0
où a, b et c sont des coefficients réels. Écrire un programme (en VBA) qui saisit les coefficients et affiche les solutions de l’équation. - Essayez de faire l’exercice de votre côté avant de Cliquer ici !
-
Activité 02
- Écrire un programme VBA qui demande à l’utilisateur le saisit d’une date (3 entiers) et calcule la date du lendemain.
- On rappelle qu’une année est bissextile si elle est divisible par 400, sinon, si elle divisible par 4 et pas par 100
-
Activité 03
- Écrire un programme VBA qui demande à l’utilisateur le saisit d’une valeur achetée et calcule la remise à appliquer et affiche le prix final.
- Il s’agit d’appliquer des taux de remises sur le montant total de la facture, en fonction de la remise appliquée. Il n’y a plus de règle stricte, comme la correspondance entre les catégories pour extraire le bon taux de remise.
- La valeur achetée est insérée à la cellule C11, la remise dans la cellule C12 et le prix final dans la cellule C13
- Toutes les valeurs ne peuvent être listées à l’avance. Des remises sont accordées par tranches ou intervalles. C’est ce qu’illustre le petit tableau ci-dessous.
- Le programme crée doit déterminer la valeur d’une remise sur un achat, et insère cette valeur ainsi que le prix après remise dans la feuille de calcul.
- L’image suivant illustre le résultat souhaité
-
Activité 04
- Écrire un programme meteo_des_plages qui demande à l’utilisateur la température de l’air (Tair), celle de l’eau (Teau) et la force du vent (FV) (entier >= 0), puis en fonction de ces données, qui seront respectivement saisies aux cellule B3, B4 et B5, affiche dans la cellule B6:
- « baignade interdite » si la force du vent est supérieure à 7 ;
- « baignade déconseillée » si la force du vent est supérieure à 5 et inférieure ou égale à 7 ;
- sinon :
- « baignade très agréable » : si Tair>=30 et Teau>=20 ;
- « Risque d’hydrocution » : si Tair>=30 et Teau<15;
- « Attention à la sortie de l’eau » : si Tair<10 et Teau>=20;
- « bain du 1er janvier ? » : si Tair<10 et Teau<10.
- Essayez de faire l’exercice de votre côté avant de Cliquer ici !
If condition1 Then
Série d’instructions 1
ElseIf condition2 Then
Série d’instructions 2
ElseIf condition3 Then
Série d’instructions 3
...
Else
Série d’instructions n
End If
Select Case <Expression>
Case valeur1:
<instructions>
Case valeur2:
<instructions>
...
Case Else:
<instructions>
End Select
Opérateur | Signification | Exemple |
---|---|---|
= | Test d’égalité | If a = 12 |
< | Test inférieur à | If a < 12 |
<= | Test inférieur ou égal à | If a <= 12 |
> | Test supérieur à | if a > 12 |
>= | Test supérieur ou égal à | If a >= 12 |
<> | Test différent de | if a <> 12 |
Quantité | Remise |
---|---|
<= 1000 | 0% |
> 1000 et <= 2000 | 10% |
> 2000 et <= 5000 | 20% |
> 5000 et < 10 000 | 25% |
>= 10 000 | 30% |