Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTER LES TABLES SOUS ACCESS


Information sur la source

Catégorie :Base de Donnees Niveau : Initié Date de création : 01/06/2003 Date de mise à jour : 01/06/2003 12:12:50 Vu : 5 891

Note :
7,25 / 10 - par 4 personnes
7,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

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

  • ' 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
' 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

Commentaires et avis

signaler à un administrateur
Commentaire de akastels le 02/06/2003 09:45:46

Désolé de n'avoir pas vu ta question plus tôt.
Il est beaucoup plus simple d'utiliser le système d'Access.
Faire un formulaire avec un ListBox("Liste1").
Mettre dans le Contenu:
SELECT MSysObjects.Name FROM MSysObjects WHERE (MSysObjects.Type)=6 ORDER BY MSysObjects.Name
La liste est complète et dans l'ordre alphabétique.
A+

signaler à un administrateur
Commentaire de snowsurfer69 le 07/06/2004 10:35:18

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!!!
en fait je ne trouve pas la zone "contenu de la liste box

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

A+

signaler à un administrateur
Commentaire de snowsurfer69 le 07/06/2004 11:55:21

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+

signaler à un administrateur
Commentaire de ugs77 le 26/08/2004 23:33:11

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

signaler à un administrateur
Commentaire de ritchy01 le 16/06/2006 00:02:09

Bonjour Nagua !
Super source, ca marche nickel de plus c'est simple et bien commenté 100% satisfait donc je note 10
Merci

signaler à un administrateur
Commentaire de swan94 le 24/10/2006 21:08:34

Merci à toi super interressant : simple et concis. Bravo

Swan94

signaler à un administrateur
Commentaire de mobbarley le 19/07/2007 14:54:02

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!!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.