L’instruction IF Then en VBA, avec des exemples
Le contrôle de flux est une composante essentielle de la programmation, permettant de prendre des décisions au sein du code. En VBA (Visual Basic for Applications), la structure If…Then…End If est l’une des plus couramment utilisées pour ce type de contrôle.
Ce tutoriel vous guidera à travers la syntaxe de base et les meilleures pratiques pour utiliser If…Then…End If et Else If. Vous trouverez également plusieurs exemples pratiques pour illustrer ces concepts.
Maîtrisez l’art des conditions dans vos macros VBA. Notre formation sur les bases VBA vous montrera comment utiliser les structures ‘If Then’ de manière optimale.
Structure If Then End If
La structure If…Then…End If permet d’exécuter un bloc de code si une condition spécifiée est vraie.
Syntaxe
‘ Bloc de code exécuté si la condition est vraie
End If
If condition Then ' Bloc de code exécuté si la condition est vraie End If
Exemple
age = 25If age >= 18 Then
MsgBox « Vous êtes majeur. »
End If
Dim age As Integer age = 25 If age >= 18 Then MsgBox "Vous êtes majeur." End If
Dans cet exemple, si la variable age est supérieure ou égale à 18, le message « Vous êtes majeur. » sera affiché.
Structure Else If
La structure Else If est utilisée pour vérifier plusieurs conditions successives. Si la première condition est fausse, la condition suivante est évaluée.
Syntaxe
‘ Bloc de code exécuté si condition1 est vraie
ElseIf condition2 Then
‘ Bloc de code exécuté si condition2 est vraie
Else
‘ Bloc de code exécuté si toutes les conditions précédentes sont fausses
End If
If condition1 Then ' Bloc de code exécuté si condition1 est vraie ElseIf condition2 Then ' Bloc de code exécuté si condition2 est vraie Else ' Bloc de code exécuté si toutes les conditions précédentes sont fausses End If
Exemple
note = 85If note >= 90 Then
MsgBox « Excellent »
ElseIf note >= 75 Then
MsgBox « Bien »
ElseIf note >= 50 Then
MsgBox « Passable »
Else
MsgBox « Insuffisant »
End If
Dim note As Integer note = 85 If note >= 90 Then MsgBox "Excellent" ElseIf note >= 75 Then MsgBox "Bien" ElseIf note >= 50 Then MsgBox "Passable" Else MsgBox "Insuffisant" End If
Dans cet exemple, en fonction de la valeur de la variable note, un message différent sera affiché.
Utilisation avancée
La structure Else If est utilisée pour vérifier plusieurs conditions successives. Si la première condition est fausse, la condition suivante est évaluée.
Plusieurs instructions sur une seule ligne
If age >= 18 Then MsgBox "Vous êtes majeur." Else MsgBox "Vous êtes mineur."
Dans ce cas, il ne faut pas mettre End If à la fin de la ligne.
Emboîter des conditions
Dim permis As Booleanage = 20
permis = TrueIf age >= 18 Then
If permis = True Then
MsgBox « Vous pouvez conduire. »
Else
MsgBox « Vous ne pouvez pas conduire sans permis. »
End If
Else
MsgBox « Vous êtes trop jeune pour conduire. »
End If
Dim age As Integer Dim permis As Boolean age = 20 permis = True If age >= 18 Then If permis = True Then MsgBox "Vous pouvez conduire." Else MsgBox "Vous ne pouvez pas conduire sans permis." End If Else MsgBox "Vous êtes trop jeune pour conduire." End If
Dans cet exemple, plusieurs conditions sont vérifiées pour déterminer si l’utilisateur peut conduire.
Bonnes pratiques
- Lisibilité : Essayez de garder les blocs If…Then…End If aussi clairs que possible. N’hésitez pas à utiliser plusieurs lignes pour chaque bloc de code
- Commentaires : Ajoutez des commentaires pour expliquer des conditions complexes
- Optimisation : Utilisez les structures ElseIf pour éviter d’évaluer inutilement des conditions lorsque vous savez que l’une d’elles a déjà été vérifiée
Exemples supplémentaires
Vérification des valeurs d’une cellule dans Excel
Dim valeur As Variant
valeur = Range(« A1 »).ValueIf IsNumeric(valeur) Then
If valeur > 100 Then
MsgBox « La valeur est supérieure à 100 »
ElseIf valeur = 100 Then
MsgBox « La valeur est exactement 100 »
Else
MsgBox « La valeur est inférieure à 100 »
End If
Else
MsgBox « La cellule ne contient pas un nombre »
End If
End Sub
Sub VérifierValeurCellule() Dim valeur As Variant valeur = Range("A1").Value If IsNumeric(valeur) Then If valeur > 100 Then MsgBox "La valeur est supérieure à 100" ElseIf valeur = 100 Then MsgBox "La valeur est exactement 100" Else MsgBox "La valeur est inférieure à 100" End If Else MsgBox "La cellule ne contient pas un nombre" End If End Sub
Détermination du jour de la semaine
Dim jour As String
jour = Format(Date, « dddd »)If jour = « lundi » Then
MsgBox « Aujourd’hui, c’est lundi. Bonne semaine ! »
ElseIf jour = « vendredi » Then
MsgBox « Aujourd’hui, c’est vendredi. Le week-end approche ! »
Else
MsgBox « Aujourd’hui, c’est » & jour & « . »
End If
End Sub
Sub AfficherJourSemaine() Dim jour As String jour = Format(Date, "dddd") If jour = "lundi" Then MsgBox "Aujourd'hui, c'est lundi. Bonne semaine !" ElseIf jour = "vendredi" Then MsgBox "Aujourd'hui, c'est vendredi. Le week-end approche !" Else MsgBox "Aujourd'hui, c'est " & jour & "." End If End Sub
Recommandations
La structure If…Then…End If en VBA est un outil puissant pour la prise de décision dans vos macros. En combinant des conditions simples avec des structures ElseIf, vous pouvez créer des flux de contrôle sophistiqués pour répondre à vos besoins spécifiques. N’oubliez pas d’adapter vos structures pour maintenir un code lisible et facile à comprendre.
Les différentes conditions
Il est possible de construire les conditions de différentes manières.
Condition avec opérateurs de comparaison
Les opérateurs de comparaison sont les plus couramment utilisés dans les conditions If. Ils permettent de comparer des valeurs numériques, des chaînes de caractères, ou même des objets.
age = 25If age >= 18 Then
MsgBox « Vous êtes majeur. »
End If
Dim age As Integer age = 25 If age >= 18 Then MsgBox "Vous êtes majeur." End If
Dans cet exemple, age >= 18 est une condition qui vérifie si la variable age est supérieure ou égale à 18. Si c’est le cas, le message « Vous êtes majeur. » s’affiche. Les principaux opérateurs de comparaison sont =, <> (différent de), >, <, >=, et <=.
Condition avec opérateurs logiques
Les opérateurs logiques permettent de combiner plusieurs conditions. Les plus utilisés sont And, Or, et Not.
Dim citoyen As Booleanage = 20
citoyen = TrueIf age >= 18 And citoyen = True Then
MsgBox « Vous pouvez voter. »
End If
Dim age As Integer Dim citoyen As Boolean age = 20 citoyen = True If age >= 18 And citoyen = True Then MsgBox "Vous pouvez voter." End If
Ici, la condition age >= 18 And citoyen = True combine deux conditions avec l’opérateur And. Le message ne s’affichera que si age est supérieur ou égal à 18 et si citoyen est True (vrai). L’opérateur Or permettrait de satisfaire la condition si l’une des deux conditions était vraie, tandis que Not inverse une condition.
Condition avec fonctions intégrées
VBA propose plusieurs fonctions intégrées qui peuvent être utilisées dans les conditions. Par exemple, IsNumeric, Len, UCase, et LCase.
valeur = « 123 »If IsNumeric(valeur) Then
MsgBox « La valeur est numérique. »
End If
Dim valeur As Variant valeur = "123" If IsNumeric(valeur) Then MsgBox "La valeur est numérique." End If
La fonction IsNumeric(valeur) vérifie si la variable valeur contient une valeur numérique. Si c’est le cas, le message « La valeur est numérique. » s’affiche. D’autres fonctions intégrées peuvent également être utilisées pour vérifier la longueur d’une chaîne (Len), convertir en majuscules (UCase), etc.
Condition avec chaînes de caractères
Les conditions peuvent également impliquer des comparaisons de chaînes de caractères.
prénom = « Alice »If prénom = « Alice » Then
MsgBox « Bonjour, Alice ! »
End If
Dim prénom As String prénom = "Alice" If prénom = "Alice" Then MsgBox "Bonjour, Alice !" End If
Dans cet exemple, la condition prénom = « Alice » vérifie si la variable prénom contient la chaîne « Alice ». Si c’est le cas, le message « Bonjour, Alice ! » s’affiche. Les comparaisons de chaînes sont sensibles à la casse (c’est-à-dire que « Alice » et « alice » sont considérés comme différents).
Condition avec valeurs booléennes
Les variables booléennes contiennent les valeurs True ou False, ce qui permet des conditions simples et directes.
estConnecte = TrueIf estConnecte Then
MsgBox « Vous êtes connecté. »
End If
Dim estConnecte As Boolean estConnecte = True If estConnecte Then MsgBox "Vous êtes connecté." End If
Ici, estConnecte est une variable booléenne. La condition If estConnecté Then équivaut à If estConnecte = True Then. Le message « Vous êtes connecté. » s’affiche si estConnecte est True.
Condition avec expressions mathématiques
Les conditions peuvent aussi inclure des expressions mathématiques pour vérifier des résultats calculés.
nombre = 25If nombre Mod 2 = 0 Then
MsgBox « Le nombre est pair. »
Else
MsgBox « Le nombre est impair. »
End If
Dim nombre As Integer nombre = 25 If nombre Mod 2 = 0 Then MsgBox "Le nombre est pair." Else MsgBox "Le nombre est impair." End If
Dans cet exemple, l’expression nombre Mod 2 = 0 utilise l’opérateur Mod pour calculer le reste de la division de nombre par 2. Si le reste est 0, le nombre est pair et le message « Le nombre est pair. » s’affiche ; sinon, le message « Le nombre est impair. » est affiché.
Condition avec la comparaison de dates
VBA permet aussi de comparer des dates directement.
aujourd’hui = DateIf aujourd’hui > #12/31/2023# Then
MsgBox « Nous sommes en 2024 ou plus tard. »
End If
Dim aujourd'hui As Date aujourd'hui = Date If aujourd'hui > #12/31/2023# Then MsgBox "Nous sommes en 2024 ou plus tard." End If
Dans cet exemple, aujourd’hui > #12/31/2023# compare la date d’aujourd’hui avec une date fixe (31 décembre 2023). Si la date actuelle est postérieure à cette date, le message « Nous sommes en 2024 ou plus tard. » s’affiche. Les dates en VBA doivent être encadrées par des dièses #.
Pour éviter les erreurs dans vos conditions ‘If Then’, faites appel à un spécialiste Excel VBA qui pourra concevoir un code fiable et optimisé.