Lister les tables sous access

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 005 fois - Téléchargée 36 fois

Contenu du snippet

Bon j'ai laissé plusieurs messages sur le forum pour savoir comment lister les tables sous access, et je ne suis pas arrivé à trouver une solution qui me convenait. J'ai donc pris ma tete et mes deux mains pour arriver à ce résultat qui fonctionne très bien !!!
Le principe est simple :
Il s'agit de mettre le nom de toutes les tables d'une BDD access dans une table que l'on appelera "NOM_DES_TABLES". On pourra en option choisir le nom des tables a inscrire (par exemple que les tables dont le nom commence par "Liste"). Attention ce code ne gère pas les erreurs....
Voila j'ai essayé de commenter un maximum pour que tout le monde s'y retrouve et comprenne un petit peu !!!

Source / Exemple :


' Déclaration des variables utilisées
Dim BD1 As Database ' -> Base de donnees
Dim iCmpt As Integer ' -> Pour compter le nbre de tables de la base
Dim TD1 As TableDef ' -> Table que nous allons creer : NOM_DES_TABLES
Dim Fld1 As Field ' -> Champ de la Table NOM_DES_TABLES
Dim RS1 As Recordset ' -> Pour enregistrer dans NOM_DES_TABLES
'-----------------------------------------------------------------------------

' Chemin d'acces a votre base de donnees
' Ici la bdd access se nomme "MA_BDD" et se
' trouve a la racine du disque dur C
Set BD1 = DBEngine.OpenDatabase ("c:\MA_BDD.mdb")
'----------------------------------------------------------------------------

' Creation de la table "NOM_DES_TABLES" 
Set TD1 = BD1.CreateTableDef("NOM_DES_TABLES")
'----------------------------------------------------------------------------

' On crée le champs "NomTables" de type texte et
' limité a 50 charactères 
' c'est cette colonne qui contiendra les noms des tables de la base MA_BDD
Set Fld1 = TD1.CreateField("NomsTables", dbText, 50)
'----------------------------------------------------------------------------

' On l'ajoute a la table "NOM_DES_TABLES"
TD1.Fields.Append Fld1
'----------------------------------------------------------------------------

' On ajoute la table ainsi créee a la base MA_BDD
BD1.TableDefs.Append TD1
'----------------------------------------------------------------------------

' On vide les buffer
Set TD1 = Nothing
Set Fld1 = Nothing
'----------------------------------------------------------------------------

' On ouvre la table en mode ecriture pour 
' permettre de rentrer des enregistrements
Set RS1 = BD1.OpenRecordset("NOM_DES_TABLES", dbOpenTable)
'----------------------------------------------------------------------------

' On parcourt la base MA_BDD 
For iCmpt = 1 To BD1.TableDefs.Count
' On inscrit les noms scannés dans le debuguer
Debug.Print BD1.TableDefs(iCmpt - 1).name
' ---- Ligne optionnelle ---
' on ajoute a la table uniquement les tables dont le nom
' commence par "Liste"
' left ( chaine , nb_char_a_comparer) comparateur chaine_de_comparaison
If Left(BD1.TableDefs(iCmpt - 1).name, 5) = "Liste" Then
RS1.AddNew
RS1.Fields("NomsTables") = BD1.TableDefs(iCmpt - 1).name
RS1.Update
End If
Next

RS1.Close
BD1.Close

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
23 juillet 2007

bonjour!
je sais ca fait longtemps qu'y a pas de com sur cette source, mais, comment peut-on faire pour recuperer les propriétés de la table?? (par exemple est-ce une table liée a un autre fichier .mdb, l'adresse du dossier contenant ces fichiers .mdb... )

euh je ne suis pas du tout programmeur ni utilisateur d'acces, c'est juste pour un petit boulot (je suis en stage actuellement), merci de ne pas me disputer si j'ai dit une betise!!
Messages postés
255
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 avril 2010

Merci à toi super interressant : simple et concis. Bravo

Swan94
Messages postés
42
Date d'inscription
mardi 16 septembre 2003
Statut
Membre
Dernière intervention
20 décembre 2009

Bonjour Nagua !
Super source, ca marche nickel de plus c'est simple et bien commenté 100% satisfait donc je note 10
Merci
Messages postés
3
Date d'inscription
mardi 22 juin 2010
Statut
Membre
Dernière intervention
30 novembre 2010

Je n'ai pas vu la question plutôt.

Voici comment faire pour lister les tables d'une base Access via VBA :

1ère méthode :

Sub ListerTable()
Dim obj As AccessObject
Dim dbs As Object
Dim ListeTablesCh As String
ListeTablesCh = ""
Set dbs = Application.CurrentData
For Each obj In dbs.AllTables
ListeTablesCh = ListeTablesCh & obj.Name & Chr(10) & Chr(13)
Next obj
MsgBox ListeTablesCh
End Sub

2ème méthode :

Sub ListerTable()
Dim obj As AccessObject
Dim dbs As Object
Dim ListeTablesCh As String
Dim i As Long
i = 0
ListeTablesCh = ""
Set dbs = Application.CurrentData
For i = 0 To dbs.AllTables.Count - 1
ListeTablesCh = ListeTablesCh & dbs.AllTables.Item(i).Name & Chr(10) & Chr(13)
Next i
MsgBox ListeTablesCh
End Sub
Messages postés
35
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
23 juin 2004

salut!!!

j'ai vu le commentaire et ça a l'aire super simple comme solution mais je débute avec access(2002) et je n'y arrive pas!!!

sa affiche bien la liste de mes tables mais uniquement dans ma liste d'options alors que je voudrait l'afficher dans ma combo

voilavoila!!!
si vous pouvez m'aider c'est sympa

A+
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.