If...Then...Else, instruction (Visual Basic)If...Then...Else Statement (Visual Basic)

Exécute un groupe d'instructions soumises à une condition, en fonction de la valeur d'une expression.Conditionally executes a group of statements, depending on the value of an expression.

SyntaxeSyntax

' Multiline syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

Cet article contient plusieurs exemples qui illustrent l’utilisation de l’instruction If...Then...Else :This article includes several examples that illustrate uses of the If...Then...Else statement:

ComposantsParts

condition
Requis.Required. Formule.Expression. Doit correspondre à True ou False, ou à un type de données implicitement convertible en Boolean.Must evaluate to True or False, or to a data type that is implicitly convertible to Boolean.

Si l’expression est une variable Boolean Nullable qui prend la valeur Nothing, la condition est traitée comme si l’expression était False, et les blocs ElseIf sont évalués s’ils existent, ou le bloc Else est exécuté s’il existe.If the expression is a Nullable Boolean variable that evaluates to Nothing, the condition is treated as if the expression is False, and the ElseIf blocks are evaluated if they exist, or the Else block is executed if it exists.

Then
Obligatoire dans la syntaxe sur une seule ligne ; facultatif dans la syntaxe multiligne.Required in the single-line syntax; optional in the multiline syntax.

statements
Ce paramètre est facultatif.Optional. Une ou plusieurs instructions qui suivent If...Then qui sont exécutées si condition prend la valeur True.One or more statements following If...Then that are executed if condition evaluates to True.

elseifcondition
Obligatoire si ElseIf est présent.Required if ElseIf is present. Formule.Expression. Doit correspondre à True ou False, ou à un type de données implicitement convertible en Boolean.Must evaluate to True or False, or to a data type that is implicitly convertible to Boolean.

elseifstatements
Ce paramètre est facultatif.Optional. Une ou plusieurs instructions qui suivent ElseIf...Then qui sont exécutées si elseifcondition prend la valeur True.One or more statements following ElseIf...Then that are executed if elseifcondition evaluates to True.

elsestatements
Ce paramètre est facultatif.Optional. Une ou plusieurs instructions qui sont exécutées si aucune expression condition ou elseifcondition précédente ne prend la valeur True.One or more statements that are executed if no previous condition or elseifcondition expression evaluates to True.

End If
Met fin à la version multiligne du bloc If...Then...Else.Terminates the multiline version of If...Then...Else block.

NotesRemarks

Syntaxe multiligneMultiline syntax

Lorsqu’une If...TheninstructionElse est rencontrée, condition est testé.When an If...Then...Else statement is encountered, condition is tested. Si condition est True, les instructions qui suivent Then sont exécutées.If condition is True, the statements following Then are executed. Si condition est False, chaque instruction ElseIf (le cas échéant) est évaluée dans l’ordre.If condition is False, each ElseIf statement (if there are any) is evaluated in order. Lorsqu’un True elseifcondition est trouvé, les instructions qui suivent immédiatement les ElseIf associées sont exécutées.When a True elseifcondition is found, the statements immediately following the associated ElseIf are executed. Si aucun elseifcondition n’a la valeur True, ou s’il n’existe aucune instruction ElseIf, les instructions qui suivent Else sont exécutées.If no elseifcondition evaluates to True, or if there are no ElseIf statements, the statements following Else are executed. Après l’exécution des instructions qui suivent Then, ElseIfou Else, l’exécution se poursuit avec l’instruction qui suit End If.After executing the statements following Then, ElseIf, or Else, execution continues with the statement following End If.

Les clauses ElseIf et Else sont toutes deux facultatives.The ElseIf and Else clauses are both optional. Vous pouvez avoir autant de clauses de ElseIf que vous le souhaitez dans une instruction If...Then...Else, mais aucune clause ElseIf ne peut apparaître après une clause Else.You can have as many ElseIf clauses as you want in an If...Then...Else statement, but no ElseIf clause can appear after an Else clause. les instructions If...Then...Else peuvent être imbriquées les unes dans les autres.If...Then...Else statements can be nested within each other.

Dans la syntaxe multiligne, l’instruction If doit être la seule instruction sur la première ligne.In the multiline syntax, the If statement must be the only statement on the first line. Les instructions ElseIf, Elseet End If peuvent être précédées uniquement d’une étiquette de ligne.The ElseIf, Else, and End If statements can be preceded only by a line label. Le bloc If...Then...Else doit se terminer par une instruction End If.The If...Then...Else block must end with an End If statement.

Conseil

L' option Select... L’instruction case peut être plus utile lorsque vous évaluez une expression unique qui a plusieurs valeurs possibles.The Select...Case Statement might be more useful when you evaluate a single expression that has several possible values.

Syntaxe sur une seule ligneSingle-Line syntax

Vous pouvez utiliser la syntaxe sur une seule ligne pour une seule condition avec le code à exécuter si elle est vraie.You can use the single-line syntax for a single condition with code to execute if it's true. Toutefois, la syntaxe sur plusieurs lignes offre davantage de structure et de flexibilité, et est plus facile à lire, à gérer et à déboguer.However, the multiple-line syntax provides more structure and flexibility and is easier to read, maintain, and debug.

Ce qui suit le mot clé Then est examiné pour déterminer si une instruction est un Ifà une seule ligne.What follows the Then keyword is examined to determine whether a statement is a single-line If. Si tout autre chose qu’un commentaire apparaît après Then sur la même ligne, l’instruction est traitée comme une instruction de If à une seule ligne.If anything other than a comment appears after Then on the same line, the statement is treated as a single-line If statement. Si Then est absent, il doit s’agir du début d’un Ifà plusieurs lignes...Then...Else.If Then is absent, it must be the start of a multiple-line If...Then...Else.

Dans la syntaxe d’une seule ligne, vous pouvez exécuter plusieurs instructions à la suite d’une If...Then décision.In the single-line syntax, you can have multiple statements executed as the result of an If...Then decision. Toutes les instructions doivent se trouver sur la même ligne et être séparées par deux-points.All statements must be on the same line and be separated by colons.

Exemple de syntaxe multiligneMultiline syntax example

L’exemple suivant illustre l’utilisation de la syntaxe multiligne de l’instruction If...Then...Else.The following example illustrates the use of the multiline syntax of the If...Then...Else statement.

Module Multiline
    Public Sub Main()
        'Create a Random object to seed our starting value 
        Dim randomizer As New Random()
        'set our variable
        Dim count As Integer = randomizer.Next(0, 5)

        Dim message As String

        'If count is zero, output will be no items
        If count = 0 Then
            message = "There are no items."
        'If count is 1, output will be "There is 1 item.".        
        ElseIf count = 1 Then
            message = "There is 1 item."
        'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. 
        Else
            message = $"There are {count} items."
        End If

        Console.WriteLine(message)
    End Sub
End Module
'This example displays output like the following:
' There are 4 items.

Exemple de syntaxe imbriquéeNested syntax example

L’exemple suivant contient des instructions If...Then...Else imbriquées.The following example contains nested If...Then...Else statements.

Module Nested
    Public Sub Main() 
        ' Run the function as part of the WriteLine output.
        Console.WriteLine("Time Check is " & CheckIfTime() & ".")     
    End Sub

    Private Function CheckIfTime() As Boolean
        ' Determine the current day of week and hour of day.
        Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
        Dim hour As Integer = DateTime.Now.Hour

        ' Return True if Wednesday from 2 to 3:59 P.M.,
        ' or if Thursday from noon to 12:59 P.M.
        If dayW = DayOfWeek.Wednesday Then
            If hour = 14 Or hour = 15 Then
                Return True
            Else
                Return False
            End If
        ElseIf dayW = DayOfWeek.Thursday Then
            If hour = 12 Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If
    End Function
End Module
'This example displays output like the following:
'Time Check is False.

Exemple de syntaxe sur une seule ligneSingle-Line syntax example

L’exemple suivant illustre l’utilisation de la syntaxe sur une seule ligne.The following example illustrates the use of the single-line syntax.

Module SingleLine
    Public Sub Main()

        'Create a Random object to seed our starting values 
        Dim randomizer As New Random()

        Dim A As Integer = randomizer.Next(10, 20)
        Dim B As Integer = randomizer.Next(0, 20)
        Dim C As Integer = randomizer.Next(0, 5)

        'Let's display the initial values for comparison
        Console.WriteLine($"A value before If: {A}")
        Console.WriteLine($"B value before If: {B}")
        Console.WriteLine($"C value before If: {C}")

        ' If A > 10, execute the three colon-separated statements in the order
        ' that they appear
        If A > 10 Then A = A + 1 : B = B + A : C = C + B

        'If the condition is true, the values will be different
        Console.WriteLine($"A value after If: {A}")
        Console.WriteLine($"B value after If: {B}")
        Console.WriteLine($"C value after If: {C}")

    End Sub
End Module
'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21

Voir aussiSee also