Partager via


Structures de contrôle imbriquées (Visual Basic)

Vous pouvez placer des instructions de contrôle à l’intérieur d’autres instructions de contrôle, par exemple un If...Then...Else bloc dans une For...Next boucle. Une instruction de contrôle placée à l’intérieur d’une autre instruction de contrôle est dite imbriquée.

Niveaux d’imbrication

Les structures de contrôle dans Visual Basic peuvent être imbriquées à autant de niveaux que vous le souhaitez. Il est courant de rendre les structures imbriquées plus lisibles en mettant en retrait le corps de chacun d’eux. L’éditeur d’environnement de développement intégré (IDE) effectue automatiquement cette opération.

Dans l’exemple suivant, la procédure sumRows ajoute les éléments positifs de chaque ligne de la matrice.

Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)  
    Dim i, j As Integer  
    For i = 0 To UBound(a, 1)  
        r(i) = 0  
        For j = 0 To UBound(a, 2)  
            If a(i, j) > 0 Then  
                r(i) = r(i) + a(i, j)  
            End If  
        Next j  
    Next i  
End Sub  

Dans l’exemple précédent, la première Next instruction ferme la boucle interne For et la dernière Next instruction ferme la boucle externe For .

De même, dans les instructions imbriquées If , les End If instructions s’appliquent automatiquement à l’instruction précédente If la plus proche. Les boucles imbriquées Do fonctionnent de manière similaire, avec l’instruction la plus Loop interne correspondant à l’instruction la plus Do interne.

Remarque

Pour de nombreuses structures de contrôle, lorsque vous cliquez sur un mot clé, tous les mots clés de la structure sont mis en surbrillance. Par exemple, lorsque vous cliquez If dans une If...Then...Else construction, toutes les instances de If, , ThenElseIf, et ElseEnd Ifdans la construction sont mises en surbrillance. Pour passer au mot clé en surbrillance suivant ou précédent, appuyez sur Ctrl+Maj+Bas ou Ctrl+Maj+Flèche vers le haut.

Imbrication de différents types de structures de contrôle

Vous pouvez imbriquer un type de structure de contrôle dans un autre type. L’exemple suivant utilise un With bloc à l’intérieur d’une For Each boucle et des blocs imbriqués If à l’intérieur du With bloc.

For Each ctl As System.Windows.Forms.Control In Me.Controls  
    With ctl  
        .BackColor = System.Drawing.Color.Yellow  
        .ForeColor = System.Drawing.Color.Black  
        If .CanFocus Then  
            .Text = "Colors changed"  
            If Not .Focus() Then  
                ' Insert code to process failed focus.  
            End If  
        End If  
    End With  
Next ctl  

Structures de contrôle qui se chevauchent

Vous ne pouvez pas chevaucher les structures de contrôle. Cela signifie que toute structure imbriquée doit être entièrement contenue dans la structure la plus interne suivante. Par exemple, la disposition suivante n’est pas valide, car la For boucle se termine avant la fin du bloc interne With .

Diagramme montrant un exemple d’imbrication non valide.

Le compilateur Visual Basic détecte ces structures de contrôle qui se chevauchent et signale une erreur au moment de la compilation.

Voir aussi