Rechercher la présence d'une table Access [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005
-
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005
-
bonjour à tous, voila j'suis en froid avec VBA et pourtant je voudrais pouvoir savoir dans le code si une table, dont je connais le nom, est présente. Si elle existe je ne fait rien si elle n'existe pas je lance une requête en création de table.
Je suppose qu'il est possible de le savoir avec For each next, mais je ne sais pas l'utiliser correctement à l'intérieur d'Access.
Merci

8 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Non, au contraire, c'est si tu ne les avais pas que ça aurait posé problème.
Autre possibilité, ouvre ton module ou crées-en un. Va dans le menu Outils/Références, là il faut que tu sélectionnes Microsoft DAO 3.60 object library.
Ce que je ne comprend pas c'est que cette référence est cochée à l'install normalement.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut,

Essaie ça dans un module d'access :

Sub essai()
Dim t As TableDef
Dim TaTable As String
Dim Trouvee As Boolean

TaTable = "Table1"

For Each t In CurrentDb.TableDefs
If t.Name = TaTable Then
Trouvee = True
Exit For
End If
Next

If Trouvee Then
MsgBox TaTable & " existe"
Else
MsgBox TaTable & " n'existe pas"
End If

End Sub

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005

Merci de m'avoir répondu. J'ai déjà essayé cette solution que tu proposais dans d'autres discutions, mais, je suis novice et y a des trucs qui m'échappent, et en fait, Access ne reconnaît pas le type "TableDef".
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Bizarre, j'ai essayé cette solution avec access 97, access 2000 et access 2003 et ça fonctionne très bien. Quelle access as-tu ?
Quand tu commences à taper dim t as , tu devrais voir une liste des possibilités qui apparait. Si tu ne la vois pas tapes sur les touches ctrl + espace.
Dans cette liste il doit y avoir tabledef.
Ou alors il te manque des dll dans ce cas Daoxxx.dll dans le dossier :
C:\Program Files\Fichiers communs\Microsoft Shared\DAO\

A la limite, tu peux essayer de remplacer par dim t as object mais si le type tabledef n'est pas reconnu, je suppose que ça bloquera au niveau de currentdb.tabledefs.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005

Excuse-moi d'avoir été aussi long, mais on a eu des problèmes de réseau, bref, j'ai Access 2000, et dans DAO je n'est que 2 dll, DAO350.dll et dao360.dll. Est ce que ça vient de là?
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005

Ok, merci pour cette manip, ça marche bien, et les types de variables sont bien accessibles maintenant, mais j'ai un souci avec la boucle, puisque je ne rentre pas dedans, du fait qu'Access ne trouve aucune table alors que ce n'est pas le cas.
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Et si tu codes :

For Each t In CurrentDb.TableDefs
MsgBox t.Name
Next

il n'y a pas de msgbox qui s'affiche avec le nom de tes tables ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
10
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
22 août 2005

Oui je viens d'y retoucher et ça marche!
J'avais oublier de remettre tabledefs derrière currentdB et j'avais essayé autre chose en attendant tes précieuses réponses. Je te remercie