VBA – Plusieurs Instructions If (Imbriquées)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on avril 30, 2023

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 utilisation fonction utilisateur getif imbriques

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.

exemple utilisation fonction utilisateur getif imbriques application utile

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

exemple utilisation fonction utilisateur getif imbriques elseif

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

exemple utilisation fonction utilisateur instructions select case

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA