MS/ACCESS, VBA : tester l’existence d’un objet (requête, table…)

Il n’est pas possible de créer deux objets portant le même nom. Aussi avant de créer un objet, il est préférable de s’assurer qu’il n’existe pas déjà. ACCESS gère différentes natures d’objets : requête (Query), table (Table), formulaire (Form)… Le cas qui va être traité ici est celui des requêtes. L’exemple de code fourni ci-après est aisément adaptable à d’autres objets. Pour ce faire, il suffit, par exemple, de remplacer Query par Table pour tester l’existence d’une table.

En synthèse, le code source de la fonction ReqExiste ci-après renvoie « True » (vrai) si l’objet testé existe ou « False » (faux) dans le cas contraire.

'Cette fonction teste l’existence d’une requête nommée dans la variable strReq contenue dans la base de données nommée db
Function ReqExiste(db As DAO.Database, ByVal strReq As String) As Boolean
  Dim req As DAO.QueryDef
  'Parcourt toutes les requêtes de la base « db »
  For Each req In db.QueryDefs
    If req.Name = strReq Then
      'La requête a été trouvée...
      ReqExiste = True
      Exit Function
    End If
  Next
  'La requête n'existe pas...
  ReqExiste = False
End Function

Quelques explications sur le code source :

La boucle compteur For Each… In… Next scrute toutes les requêtes (QueryDefs) de la base de données “db”.

Le nom de chacune des requêtes (req.Name) est comparé au nom à tester (strReq) à l’aide du test conditionnel If… Then… Else. Si le nom correspond (=), la fonction renvoie True (la requête existe) et le code s’arrête (Exit Function) ; dans le cas contraire, le code passe à la requête suivante (Next).

Si toutes les requêtes ont été passées en revue et qu’aucune ne correspond au nom recherché, la fonction renvoie False.

Approfondir le sujet : Maîtriser ACCESSMaîtriser le langage VBAMaîtriser le langage de requête SQL / Analyse de données

Share Button
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.