A l'aide d'instructions conditionnelles, vous pouvez écrire du code BSL qui prend des décisions et répète des actions. Les instructions conditionnelles suivantes sont disponibles dans le langage BSL :
Remarque :
L'instruction If...Then...Else permet d'évaluer si une condition est True ou False et, en fonction du résultat, d'indiquer les instructions à exécuter. En général, la condition est une expression qui utilise un opérateur de comparaison pour comparer une valeur ou une variable à une autre. Pour plus d'informations sur les opérateurs de comparaison, reportez-vous à la section Opérateurs de comparaison. Les instructions If...Then...Else peuvent être imbriquées à autant de niveaux que nécessaire.
Exécution d'instructions si une condition est True
Afin d'exécuter une seule instruction lorsqu'une condition est True, utilisez la syntaxe monoligne pour l'instruction If...Then...Else. L'exemple suivant illustre la syntaxe monoligne.
Cet exemple omet le mot-clé Else.
Sub Test()
Dim myNumber
myNumber = 10
If myNumber < 15 Then myNumber = 15
'myNumber: 15
End Sub
Pour exécuter plusieurs lignes de code, vous devez utiliser la syntaxe multiligne (ou de bloc). Cette syntaxe inclut l'instruction End If, comme illustré dans l'exemple suivant :
Sub Test()
Dim myNumber
myNumber = 10
If myNumber < 15 Then
myNumber = 15
End If
'myNumber: 15
End Sub
Exécution de certaines instructions si une condition est True et exécution d'autres instructions si une condition est False
Vous pouvez utiliser une instruction If...Then...Else pour définir deux blocs d'instructions exécutables : un bloc à exécuter si la condition est True, l'autre bloc à exécuter si la condition est False.
Sub Test(value)
If value = 0 Then
value = 10
Else
value = 20
End If
' Outputs: value: 10 if value was 0, otherwise 20
End Sub
Choix entre plusieurs alternatives
Une variante de l'instruction If...Then...Else vous permet de choisir parmi plusieurs alternatives. L'ajout de clauses ElseIf étend les fonctionnalités de l'instruction If...Then...Else afin de vous permettre de contrôler le flux du programme en fonction de différentes possibilités. Par exemple :
Sub ReportValue(value)
If value = 0 Then
value = 10
ElseIf value = 1 Then
value = 20
ElseIf value = 2 Then
value = 30
Else
value = 40
End If
'value: 20
End Sub
ReportValue(1) ' Condition ElseIf value = 1 is met and value will be set to 20
Vous pouvez ajouter autant de clauses ElseIf que nécessaire pour proposer des choix alternatifs. Toutefois, l'utilisation intensive de clauses ElseIf devient souvent fastidieuse. L'instruction Select Case constitue un meilleur moyen de choisir entre plusieurs alternatives.
Sub NestedIf(value)
If value < 10 Then
If value < 5 Then
'value is less than 5
Else
'value is between 5 and 9
End If
Else
'value is 10 or greater
End If
End Sub
NestedIf(6) ' Triggers the logic: value is between 5 and 9
Prise de décisions avec Select Case
La structure Select Case offre une alternative à If...Then...ElseIf pour exécuter de manière sélective un bloc d'instructions parmi plusieurs blocs d'instructions. Une instruction Select Case offre les mêmes fonctionnalités que l'instruction If...Then...Else, mais elle améliore l'efficacité et la lisibilité du code.
Une structure Select Case fonctionne avec une seule expression de test qui est évaluée une fois, en haut de la structure. Le résultat de l'expression est ensuite comparé aux valeurs de chaque instruction Case de la structure. En cas de correspondance, le bloc d'instructions associé à cette instruction Case est exécuté, comme dans l'exemple suivant.
Les exemples suivants illustrent l'utilisation de Select Case :
Exemple 1 :
Dim age
age = (30/6) * 6 ' age = 30
Select Case True
Case age < 18
'You're a minor Section
Case age >= 18 And age <= 65
'You're an adult Section
Case Else
'You're a senior citizen Section
End Select
Exemple 2 :
Dim grade
grade = "B"
Select Case grade
Case "A", "B", "C"
'Pass Section
Case "D"
'Barely Passed Section
Case "F"
'Fail Section
Case Else
'Invalid grade Section
End Select
Remarque :
La structure Select Case évalue une expression une fois, en haut de la structure. En revanche, la structure If...Then...ElseIf peut évaluer une expression différente pour chaque instruction ElseIf. Vous ne pouvez remplacer une structure If...Then...ElseIf par une structure Select Case que si chaque instruction ElseIf évalue la même expression.