Sécurité Mécapoulets

Archives Google         Base de connaissance       Forum Access        Sommaire   
Présentation Access 2007          Articles indispensables de la base de connaissance   
Téléchargement    Librairies    Abonnement   
Structures de contrôle  VBA OfficeSystem.Access 2000 - 2007    
Blog 2000-2003
Blog 2007
Annuaire
Accueil
Remonter
If...ElseIf...Else...EndIf
Select case
Do...Loop
For.... Next
For each....Next
While....Wend
With....End With
IIf
Choose
Switch

Le Runtime Access 2007 français est disponible




Les structures de contrôles sont utilisées pour contrôler l'écoulement du processus dans le code VBA.

Il faut se familiariser avec ces contrôles car tous ont des qualités communes mais sont tous différents. Certains peuvent être remplacés par d'autres selon la complexité du processus.

Les contrôles pourront s'imbriquer les uns aux autres et chaque contrôle aura sa fin de contrôle. Ce qui veut dire qu'il va falloir structurer ces contrôles.

Pour bien structurer le code, il faut qu'il soit lisible naturellement et que chaque structure de contrôle soit situé au même niveau vertical. Il faut indenter le code.

L'indentation du code VBA consiste à introduire des tabulations en début de ligne pour améliorer la visibilité.

Voici un code en ligne:

For Each Obj In CurrentProject.AllForms
If Obj.Name <> Me.Name Then
DoCmd.OpenForm Obj.Name, acDesign, , , , acHidden
For Each ctl In Forms(Obj.Name).Controls
If ctl.ControlType = acTextBox Then
If ctl.ControlSource = Me.Liste_Champs Then
Me.Liste_Forms.RowSource = Me.Liste_Forms.RowSource & Obj.Name & "/" & ctl.Name & ";"
End If
End If
Next ctl
Set frm = Forms(Obj.Name)
If frm.HasModule Then
Set Mod1 = frm.Module
If Mod1.Find(Me.Liste_Champs, 1, 1, Mod1.CountOfLines, 4095) Then
Me.Liste_Modules.RowSource = Me.Liste_Modules.RowSource & Obj.Name & ";"
End If
End If
DoCmd.Close acForm, Obj.Name, acSaveNo
End If
Next Obj

Voici le même code indenté:

For Each Obj In CurrentProject.AllForms
    If Obj.Name <> Me.Name Then
        DoCmd.OpenForm Obj.Name, acDesign, , , , acHidden
        For Each ctl In Forms(Obj.Name).Controls
            If ctl.ControlType = acTextBox Then
                If ctl.ControlSource = Me.Liste_Champs Then
                    Me.Liste_Forms.RowSource = Me.Liste_Forms.RowSource & Obj.Name & "/" & ctl.Name & ";"
                End If
            End If
        Next ctl
        Set frm = Forms(Obj.Name)
        If frm.HasModule Then
            Set Mod1 = frm.Module
            If Mod1.Find(Me.Liste_Champs, 1, 1, Mod1.CountOfLines, 4095) Then
                    Me.Liste_Modules.RowSource = Me.Liste_Modules.RowSource & Obj.Name & ";"
            End If
        End If
        DoCmd.Close acForm, Obj.Name, acSaveNo
    End If
Next Obj

Avez-vous besoin de commenter l'indentation ?

Votre code sera d'autant plus facile à maintenir qu'il sera clair.

Indentation manuelle ou automatique ?

Vous pouvez gérez personnellement votre indentation chaque fois que vous utilisez une structure de contrôle et utiliser un logiciel spécifique d'indentation pour la présentation finale.

Dans les logiciels fiables il y a GfmIndenter qu'on trouve sur le net.