CathyAstuce

VBA

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

CONDITIONS

  If.....Then.....Else Select Case  

Remonter I. If.....Then.....Else

Cette instruction permet d'exécuter 1 ou plusieurs instructions selon le résultat d'une condition, vous avez 2 branchements possibles : le cas où la condition est vraie et le cas où elle est fausse. Cette instruction s'utilise ainsi :

  • 1 seule instruction à exécuter si la condition est vraie :
    Sub Condition()
       If Date > "01/01/2001" Then MsgBox "Nous sommes le " & Format(Date, "dddd d mmmm yyyy")
    End Sub
     
  • Plusieurs instructions à exécuter si la condition est vraie :
    Sub Condition()
       If Date > "01/01/2001" Then
          Range("A1") = Date
          MsgBox "Nous sommes le " & Format(Date, "dddd d mmmm yyyy")
       End If
    End Sub 
  • 1 ou plusieurs instructions si la condition est vraie et d'autres instructions si la condition est fausse :
    Sub Condition()
      Dim NbJours As Long
      Dim UneDate As Date

      UneDate = DateValue("01/01/2001")
      NbJours = Date - UneDate
      If NbJours > 0 Then
        MsgBox NbJours & " jours se sont déroulés depuis le " & Format(UneDate, "dddd d mmmm yyyy")
      Else
        MsgBox "Encore " & -NbJours & " jours avant le " & Format(UneDate, "dddd d mmmm yyyy")
      End If
    End Sub
  • Tester une 2ème condition si la 1ère est fausse :
    Sub Condition()
      Dim NbJours As Long
      Dim UneDate As Date

      UneDate = DateValue("01/01/2001")
      NbJours = Date - UneDate
      If NbJours > 0 Then
        MsgBox NbJours & " jours se sont déroulés depuis le " & Format(UneDate, "dddd d mmmm yyyy")
      ElseIf NbJours = 0 Then
        MsgBox "Nous sommes le " & Format(UneDate, "dddd d mmmm yyyy")
      Else
        MsgBox "Encore " & -NbJours & " jours avant le " & Format(UneDate, "dddd d mmmm yyyy")
      End If
    End Sub

Vous pouvez imbriquer plusieurs If.....Then.....Else autant de fois que vous le désirez, mais attention à la façon dont vous les écrivez, elles doivent se présenter ainsi :
If condition1 then
    instructions ou pas
    If condition2 then
        bloc d'instructions qui s'exécutent la conditon1 et condition2 sont vraies
    End if
    instructions ou pas
End if

Remonter II. Select Case

Cette instruction permet d'exécuter 1 ou plusieurs instructions selon le résultat d'une variable, elle permet plusieurs branchements possibles et évite l'utilisation de ElseIf.  Chaque instruction Case peut contenir 1 ou plusieurs valeurs (par exemple : 1,5,8), une plage de valeurs (par exemple : 1 to 5) ou la combinaison d'une valeur et d'un opérateur de comparaison (par exemple : Is >= 5). Elle s'utilise comme dans l'exemple suivant :

Sub Condition()
    Dim N As Byte
    Dim MaCel As Range

    For N = 1 To 10
        Range("A" & N) = N
    Next
    For Each MaCel In Range("A1:A10")
        Select Case MaCel
            Case 2
                MaCel.Offset(0, 1) = MaCel + 1000
            Case 1, 4
                MaCel.Offset(0, 1) = MaCel + 10000
            Case 5 To 6
                MaCel.Offset(0, 1) = MaCel + 10
            Case Is > 7
                MaCel.Offset(0, 1) = MaCel + 100
            Case Else
                MaCel.Offset(0, 1) = MaCel
        End Select
    Next
End Sub

AccueilDébut de la page