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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
If condition Then
‘ 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
If condition Then
    ' Bloc de code exécuté si la condition est vraie
End If

Exemple


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim age As Integer
age = 25
If age >= 18 Then
MsgBox « Vous êtes majeur. »
End If
Dim age As Integer
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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
Dim note As Integer
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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
If age >= 18 Then MsgBox « Vous êtes majeur. » Else MsgBox « Vous êtes mineur. »
If age >= 18 Then MsgBox « Vous êtes majeur. » Else MsgBox « Vous êtes mineur. »
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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim age As Integer
Dim permis As Boolean
age = 20
permis = True
If age >= 17 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 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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SubrifierValeurCellule()
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
Sub VérifierValeurCellule()
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


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim age As Integer
age = 25
If age >= 18 Then
MsgBox « Vous êtes majeur. »
End If
Dim age As Integer
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
Dim age As Integer
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim valeur As Variant
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
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim prénom As String
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
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim estConnecte As Boolean
estConnecte = True
If estConnecte Then
MsgBox « Vous êtes connecté. »
End If
Dim estConnecte As Boolean
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
Dim nombre As Integer
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.


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
Dim aujourd’hui As Date
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é.