Option explicit
L’instruction Option Explicit est utilisée au niveau module VBA pour imposer la déclaration explicite de toutes les variables de ce module. Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation.
Si vous n'utilisez pas l'instruction Option Explicit, toutes les variables non déclarées sont de type Variant.
Vous pouvez aussi utiliser l'instruction Option Explicit pour éviter toute faute de frappe lors de la saisie du nom d'une variable existante ou pour écarter tout risque de confusion dans un code où la portée de la variable n'apparaît pas clairement.
Si votre application est de taille importante vous pouvez afficher les formulaires qui ne possèdent pas cette instruction à l’aide de la fonction VBA suivante :
Créer un module standard et placer le code ci-dessous. Ouvrir la fenêtre Exécution. Cliquer n’importe où à l’intérieur de la fonction fExplicit et enfoncer F5. Attendre que « terminé » soit affiché dans la fenêtre exécution.
Option Compare Database
Option Explicit
Option Compare Database
Option Explicit
Dim mdl As Module
Dim lngSLine As Long, lngSCol As Long
Dim lngELine As Long, lngECol As Long
Dim Obj As AccessObject
Dim frm As Form
Dim lngSLine As Long, lngSCol As Long
Dim lngELine As Long, lngECol As Long
Dim Obj As AccessObject
Dim frm As Form
Public Function fExplicit()
Debug.Print "Formulaires sans Option Explicit"
On Error GoTo Err_Explicit
For Each Obj In CurrentProject.AllForms
If Left(Obj.Name, 1) <> "~" Then
DoCmd.OpenForm Obj.Name, acDesign, , , , acHidden
Set frm = Forms(Obj.Name)
If frm.HasModule Then
DoCmd.OpenModule frm.Module.Name
Set mdl = frm.Module
lngSLine = 0
lngSCol = 0
lngELine = 0
lngECol = 0
If Not mdl.Find("Option explicit", lngSLine, lngSCol, lngELine, lngECol) Then
Debug.Print "Forms(""" & Obj.Name & """)"
End If
DoEvents
DoCmd.Close acModule, frm.Module.Name
End If
DoEvents
DoCmd.Close acForm, Obj.Name
Err_Explicit:
End If
DoEvents
Next Obj
Set frm = Nothing
Debug.Print "terminé"
End Function
Debug.Print "Formulaires sans Option Explicit"
On Error GoTo Err_Explicit
For Each Obj In CurrentProject.AllForms
If Left(Obj.Name, 1) <> "~" Then
DoCmd.OpenForm Obj.Name, acDesign, , , , acHidden
Set frm = Forms(Obj.Name)
If frm.HasModule Then
DoCmd.OpenModule frm.Module.Name
Set mdl = frm.Module
lngSLine = 0
lngSCol = 0
lngELine = 0
lngECol = 0
If Not mdl.Find("Option explicit", lngSLine, lngSCol, lngELine, lngECol) Then
Debug.Print "Forms(""" & Obj.Name & """)"
End If
DoEvents
DoCmd.Close acModule, frm.Module.Name
End If
DoEvents
DoCmd.Close acForm, Obj.Name
Err_Explicit:
End If
DoEvents
Next Obj
Set frm = Nothing
Debug.Print "terminé"
End Function