Lister les tables sous access

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

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.