💻 Cours de programmation en VBA 📊

🔀 Les conditions

Les conditions permettent d’exécuter différentes instructions en fonction du résultat d’un test logique. En VBA, une condition évalue toujours une expression qui renvoie soit True, soit False.

Si le résultat est True, le bloc de code associé à la condition est exécuté. Si le résultat est False, ce bloc est ignoré.

L’instruction If

L’instruction If est utilisée lorsque l’on souhaite exécuter du code uniquement si une condition est remplie.

La forme la plus simple est la suivante :


If condition Then
    'Instructions exécutées si la condition est vraie
End If

Dans ce cas, les instructions contenues dans le bloc If sont exécutées uniquement si la condition est vraie. Si la condition est fausse, aucune instruction n’est exécutée et le programme continue après End If.

Exemple :


If Range("A1").Value > 0 Then
    MsgBox "La valeur est positive"
End If

ElseIf et Else

Il est possible de tester plusieurs situations différentes à l’aide de ElseIf et Else. Cela permet d’exécuter un bloc de code différent selon le cas rencontré.


If condition1 Then
    'Condition 1 vraie
ElseIf condition2 Then
    'Condition 2 vraie
Else
    'Aucune condition n’est vraie
End If

Les parties ElseIf et Else sont optionnelles.

Le programme teste les conditions dans l’ordre, dès qu’une condition est vraie, le bloc correspondant est exécuté et les autres conditions ne sont plus testées.

Conditions simples et conditions composées

Une condition peut être un test simple, par exemple :


If note >= 10 Then
    MsgBox "Admis"
End If

Une condition peut également être composée de plusieurs tests logiques combinés. Ces combinaisons permettent de préciser plus finement les situations à traiter.


If note >= 10 And absence = False Then
    MsgBox "Admis"
End If

Dans cet exemple, le message s’affiche uniquement si la note est supérieure ou égale à 10 et si l’élève n’a pas été absent.

Les conditions composées sont très utilisées pour vérifier plusieurs critères avant d’exécuter une action, comme contrôler des valeurs, des autorisations ou des états.

If sur une seule ligne

Lorsque le code à exécuter est très court, il est possible d’écrire une condition sur une seule ligne.


If note = 6 Then MsgBox "Parfait"

Cette écriture est pratique pour des tests simples, mais elle est à éviter si le traitement devient plus complexe.

Exemple complet avec If / ElseIf

Une macro qui ajoute un commentaire en fonction de la note d’un élève.


Sub CommentaireSurLaNote()

    'Les élèves sont notés sur 6
    'La note se trouve dans la cellule A1
    Dim note As Integer
    Dim commentaire As String

    note = Range("A1").Value

    If note >= 6 Then
        commentaire = "Parfait"
    ElseIf note > 3 Then
        commentaire = "Bien"
    ElseIf note = 3 Then
        commentaire = "Vous avez la moyenne"
    ElseIf note >= 1 Then
        commentaire = "Mauvais résultat"
    ElseIf note = 0 Then
        commentaire = "Très mauvais résultat"
    Else
        commentaire = "Erreur : cette note n'est pas permise"
    End If

    'Le commentaire est ajouté dans la cellule B1
    Range("B1").Value = commentaire

End Sub

Dans cet exemple, une seule condition est exécutée. Dès qu’une condition est vraie, les autres tests ne sont plus évalués.

Select Case

Lorsque plusieurs conditions dépendent de la même variable, l’instruction Select Case permet d’écrire un code plus clair et plus lisible. Elle est particulièrement adaptée lorsque l’on teste une valeur précise parmi plusieurs possibilités.


Sub CommentaireSurLaNote()

    Dim note As Integer
    Dim commentaire As String

    note = Range("A1").Value

    Select Case note
        Case 6
            commentaire = "Excellent résultat"
        Case 5
            commentaire = "Bon résultat"
        Case 4
            commentaire = "Résultat satisfaisant"
        Case 3
            commentaire = "Résultat insuffisant"
        Case 2
            commentaire = "Mauvais résultat"
        Case 1
            commentaire = "Très mauvais résultat"
        Case 0
            commentaire = "Résultat exécrable"
        Case Else
            commentaire = "Erreur : cette note n'est pas permise"
    End Select

    Range("B1").Value = commentaire

End Sub