VBA – Plusieurs Instructions If (Imbriquées)
In this Article
Ce tutoriel vous montrera comment utiliser les instructions If imbriquées dans VBA.
Les instructions If vous permettent de tester une condition dans VBA pour voir si la condition est vraie ou fausse. En fonction de la réponse, l’instruction exécutera le code de la déclaration vraie ou fausse correspondante.
Une Seule Instruction IF
Sub TestIf
Dim x as Integer
x = 10
If x = 10 then
'Si x est 10, la condition est vrai
MsgBox "x est 10"
Else
'Si x n'est pas 10, la condition est fausse
Msgbox "x est différent de 10"
End If
End Sub
Utilisation des IF Imbriqués
Un If imbriqué vous permet de placer plusieurs conditions à l’INTÉRIEUR de chacune des instructions True et/ou False de l’instruction If d’origine.
Sub TestIfImbrique()
Dim x as Integer
Dim y as Integer
Dim z as Integer
x = 10
y = 9
z = 8
If x = 10 Then
'Si x egal 10, la condition est vraie donc teser la valeur de y
If y = 9 Then
MsgBox "y est 9"
Else
'Si y est différent de 9, la condition est fausse
Msgbox "y est différent de 9"
End If
Else
'Si x n'est pas égal à 10 alors la condition est fausse, donc tester la valeur de z
If z = 8 Then
MsgBox "z est 8"
Else
'Si z est différent de 8, alors la condition est fausse
Msgbox "z est différent 8"
End If
'Un autre "End If" est nécessaire pour clore l'instruction If initiale
End If
End Sub
L’indentation de votre code lorsque vous l’écrivez est toujours une bonne pratique car elle rend le code facile à lire et à suivre lorsque vous devez y revenir à un moment donné, ou lorsqu’un autre programmeur doit le lire.
Nous pourrions également créer une fonction définie par l’utilisateur (UDF ) et appeler les valeurs de certaines cellules d’Excel dans la fonction à l’aide de paramètres.
Function GetIf(x as Integer, y as Integer, z as Integer) as String
If x = 10 Then
'Si x egal 10, la condition est vraie donc teser la valeur de y
If y = 9 Then
GetIf= "y est 9"
Else
'Si y est différent de 9, la condition est fausse
GetIf="y est différent de 9"
End If
Else
'Si x n'est pas égal à 10 alors la condition est fausse, donc tester la valeur de z
If z = 8 then
GetIf="z est 8"
Else
'Si z est différent de 8, alors la condition est fausse
GetIf="z est différent de 8"
End If
'Un autre "End If" est nécessaire pour clore l'instruction If initiale
End If
End Function
Exemple Utile d’Utilisation d’un If Imbriqué
Considérons la fonction suivante :
Function GetDiscount(dblPrice As Double) As Double
If dblPrice >= 1000 Then
'Si le prix est supérieur à 1000, attribuer un rabais
If dblPrice >= 2000 Then
'Si le prix est supérieur à 2000, offrir un solde de 10%
GetDiscount = dblPrice * 0.1
Else
'Sinon, offrir un solde de 5%
GetDiscount = dblPrice * 0.05
End If
'Si le prix n'est pas supérieur à 1000
Else
'Si le prix est supérieur à 500, offrir un rabais de 2.5%
If dblPrice >= 500 Then
GetDiscount = dblPrice * 0.025
Else
'Sinon ne pas offrir de remise
GetDiscount = 0
End If
'Un autre "End If" est nécessaire pour clore l'instruction If initiale
End If
End Function
En utilisant cette fonction dans une feuille Excel, nous pouvons tester le prix total d’une commande et appliquer différentes remises en fonction de ce total.
Utilisation de ElseIf
La fonction ElseIf permet de simplifier le code car elle ne passe à la deuxième instruction if que si la première renvoie un faux.
Function GetDiscount(dblPrice As Double) As Double
'Utilisez l'instruction ElseIf pour réduire la quantité de code
If dblPrice >= 2000 Then
GetDiscount = dblPrice * 0.1
ElseIf dblPrice >= 1000 Then
GetDiscount = dblPrice * 0.075
ElseIf dblPrice >= 500 Then
GetDiscount = dblPrice * 0.05
ElseIf dblPrice >= 200 Then
GetDiscount = dblPrice * 0.025
ElseIf dblPrice >= 100 Then
GetDiscount = dblPrice * 0.01
Else
GetDiscount = 0
End If
End Function
Utilisation d’une Instruction Select Case
Nous pouvons également utiliser une instruction Select Case pour obtenir le même effet.
Function GetDiscount(dblPrice As Double) As Double
Select Case dblPrice
'Cette instruction case contient niveaux différents de remises
Case Is >= 2000
GetDiscount = dblPrice * 0.1
Case Is >= 1000
GetDiscount = dblPrice * 0.075
Case Is >= 500
GetDiscount = dblPrice * 0.05
Case Is >= 200
GetDiscount = dblPrice * 0.025
Case Is >= 100
GetDiscount = dblPrice * 0.01
Case Else
GetDiscount = 0
End Select
End Function