Contrôle de l'exécution des programmes

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 :

  • Instruction If...Then...Else
  • Instruction Select Case

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.