dev:excelvba:structuredecision

Excel - VBA : les structures de décisions

Les structures de décisions permettent de tester des conditions spécifiques avant d’exécuter des instructions. On les appelle aussi alternatives ou branchements conditionnels.

Il existe deux types d'alternatives :

  • If … Then … Else (Si … alors … sinon)
  • Select … Case … (Selon que … Cas …)
If <condition> Then 
  <instruction> 
Else 
  [<instructions>] 
End If

Exemple : tester la valeur d'une cellule et définir une remise de 0% si le montant est ⇐ 500 € sinon la remise est de 2% :

Public Function remise(cellule)
  If cellule <= 500 Then
    remise = 0
  Else
    remise = 0.02
  End If
End Function

On peut bien sûr imbriquez plusieurs alternatives If … Then … Else
Exemple : tester la valeur d'une cellule et définir une remise de 0% si le montant est ⇐ 500 €, une remise de 2% sinon si le montant HT est < 1000 sinon la remise est de 4% :

Public Function remise(cellule)
  If cellule <= 500 Then
    remise = 0
  Else
    If cellule < 1000 Then
      remise = 0.02
    Else
      remise = 0.04
    End If
  End If
End Function

La structure Select … Case remplace avantageusement plusieurs If imbriqués quand on doit tester différentes valeurs d'une même donnée ou d'une cellule.

Select Case <ExpressionTestée>
   Case <ListeExpression>
        <instructions>
   Case <ListeExpression>
        <instructions>
...
   ...
   Case Else
        <instructions>
End Select

<listeExpression> peut prendre l’une des formes suivantes :

  • valeur (ex : Case 10)
  • liste de valeurs (ex : Case 1, 5, 10)
  • plage de valeurs (ex : Case 1 To 5)
  • expression conditionnelle (ex : Case Is >= 5)

En reprenant l'exemple précédant : tester la valeur d'une cellule et définir une remise de 0% si le montant est ⇐ 500 €, une remise de 2% sinon si le montant HT est < 1000 sinon la remise est de 4% :

Public Function remise3(cellule)
   Select Case cellule
      Case Is <= 500
         remise3 = 0
      Case Is < 1000
        remise3 = 0.02
      Case Else
        remise3 = 0.04
   End Select
End Function
  • dev/excelvba/structuredecision.txt
  • Dernière modification : 2023/01/20 23:32
  • de pb