🔀 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