Structures de contrôle imbriquées (Visual Basic)
Vous pouvez insérer des instructions de contrôle dans d'autres instructions de contrôle, par exemple un bloc If...Then...Else dans une boucle For...Next. Dans ce cas, l'instruction de contrôle est imbriquée dans une autre instruction de contrôle.
Niveaux d'imbrication
Dans Visual Basic, les structures de contrôle peuvent être imbriquées selon le nombre de niveaux voulu. Il est courant de mettre en retrait le corps de chaque structure imbriquée afin d'accroître la lisibilité. L'éditeur d'environnement de développement intégré le fait automatiquement.
Dans l'exemple suivant, la procédure sumRows additionne 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 instruction Next ferme la boucle For interne et la dernière instruction Next ferme la boucle For externe.
De même, dans les instructions If imbriquées, les instructions End If s'appliquent automatiquement à l'instruction If précédente la plus proche. Les boucles Do imbriquées fonctionnent de la même manière, dans le sens où l'instruction Loop la plus profonde correspond à l'instruction Do la plus profonde.
Notes
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 sur If dans une construction If...Then...Else, toutes les instances des mots clés If, Then, ElseIf, Else et End If de la construction sont mises en surbrillance. Pour passer au mot clé en surbrillance suivant ou revenir au précédent, appuyez sur CTRL+MAJ+FLÈCHE BAS ou CTRL+MAJ+FLÈCHE HAUT. Pour plus d'informations, consultez Comment : utiliser la mise en surbrillance des références.
Imbrication de genres de structures de contrôle différents
Vous pouvez imbriquer un genre de structure de contrôle dans un autre. L'exemple suivant utilise un bloc With à l'intérieur d'une boucle For Each et des blocs If imbriqués à l'intérieur du bloc With.
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
Chevauchement de structures de contrôle
Vous ne devez pas faire en sorte que des structures de contrôle se chevauchent. Cela signifie que toute structure imbriquée doit être entièrement contenue dans la structure la plus profonde suivante. Par exemple, la disposition suivante n'est pas valide car la boucle For se termine avant la fin du bloc With interne.
Imbrication non valide de structures For et With
Le compilateur Visual Basic détecte ces chevauchements de structures de contrôle et signale une erreur de compilation.
Voir aussi
Tâches
Comment : transférer un contrôle hors d'une structure de contrôle (Visual Basic)
Concepts
Structures de décision (Visual Basic)
Structures de boucle (Visual Basic)
Autres structures de contrôle (Visual Basic)