MS ACCESS : Rechercher un mot dans toutes les requêtes

Les modifications d’une application conséquente sont souvent difficiles à réaliser, surtout dans le cas des requêtes. Dans ce billet je vous propose un bout de code pour rechercher un mot, complet ou non, dans toutes les requêtes d’un fichier MS Access.

Function SnifQuery(Optional strText As String = "")
 On Error GoTo errSub

 Dim db As DAO.Database
 Dim qry As DAO.QueryDef
 Set db = CodeDb

 ' si rien n'est transmis on demande le mot
 If strText = "" Then
    strText = InputBox("Indiquez le mot à rechercher dans les requêtes." & _
           vbCrLf & "Ce mot peut être incomplet.", "Mot à rechercher", "")
    If strText = "" Then Exit Function
End If

' balaye toutes les requêtes
For Each qry In db.QueryDefs
     'si on trouve le mot
     If qry.sql Like "*" & strText & "*" Then
          ' on ouvre
          DoCmd.OpenQuery qry.Name, acViewDesign
     End If
Next

' on est propre donc on ferme le chose dont on ne se sert plus.
Set qry = Nothing
Set db = Nothing
Exit Function

errSub:
Resume Next

End Function

Pour le lancement vous pouvez passer par la fenêtre Exécution de VBE ou encore créer une macro Autokeys.

  • Ouvrez une nouvelle macro.
  • Affichez la colonne Nom de macro.
  • Entrez le raccourci souhaité. Exemple +^{Q}
  • Dans la colonne Action sélectionnez ExécuterCode.
  • Indiquez dans le nom de la fonction SnifQuery().

Lorsque vous utiliserez Ctrl+Shift+Q la fonction sera appelée.

Attention ce bout de code ne fait pas de recherche dans les requêtes des bibliothèques.

Bonne utilisation et bonne année à tous !