Afficher les tables d'une base de données dans la liste déroulante d'un formulai [Résolu]

Signaler
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
bonjour a tous,
est ce que quelqu'un c'est comment faire pour afficher dans la liste déroulante d'un formulaire, la liste des tables de la base de données su laquelle on travaille.
J'ai réussi en entrant le nom des tables comme liste de valeurs mais j'ai ensuite une requête à éxécuter à partir de ces tables et sa ne fontionne pas car je pense qu'il ne reconnait que les valeurs que j'ai tapé comme des tables. 
merci.

22 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Private Sub Form_Load()
Dim sBuffer As String
Dim oTable As TableDef
For Each oTable In CurrentDb.TableDefs
If LenB(sBuffer) Then
sBuffer = sBuffer & ";"
End If
sBuffer = sBuffer & oTable.Name
Next oTable
Modifiable0.RowSourceType = "Value List"
Modifiable0.RowSource = sBuffer
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ok, donc certainement DAO...

Dim oTable as TableDef
For Each oTable in CurrentDB.TableDefs
Combo1.AddItem oTable.Name
Next oTable
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

et cette procédure événementielle je la mets sur quel événement pour que le résultat s'affiche? 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
cette procédure ?
tu la mets ou tu veux ^^

dans la procédure évènementielle de ton choix...
sur un click, au chargement (Form_Load), ...
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

la procédure événementielle doit-elle se faire sur générateur de macro, ou générateur de code?


Si elle est sur générateur de macro quelle action dois-je choisir dans la macro?


MERCI d'avance pour les réponses
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Arretes de valider toutes les réponses, ca marque ton probleme comme résolu...
ce qui fait que personne d'autre (a priori) ne viendra t'aider, si eventuellement ton probleme persiste.

de plus, valider toutes les reponses reviens a n'en valider aucune, on ne voit pas, au premier coup d'oeil la (ou les) réponse qui t'ont aidé a solutionner ton probleme
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Générateur de Code...
quelle action ? je te l'ai dit : Form_Load

Private Sub Form_Load()
Dim oTable as TableDef
For Each oTable in CurrentDB.TableDefs
Combo1.AddItem oTable.Name
Next oTable
End Sub
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

dsl je en connais pas trople fonctionnement des réponses à valider c'est la première fois que j'utilise ce site.

pour le pb de vb

voila ce que j'ai mis dans ma liste modifiable propriétés>événement >sur clic (car je netrouve pas sur clic au chargement)

Option Compare Database
Option Explicit
Private Sub Modifiable4_Click()
Dim oTable As TableDef
    For Each oTable In CurrentDb.TableDefs
        Modifiable4.AddItem oTable.Name
    Next oTable
End Sub

mais il me dit membre de méthode ou données introuvable.
dsl je ne fais pas de la vb depuis très longtemps alior j'ai un peu d mal
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
dans la fenetre VBA (celle où tu saisi le code)
Outils > References > Microsoft DAO 3.6 Object Library

tu pourras ainsi jouer avec CurrentDB, TableDef et TableDefs....

et utiliser le code suivant :

Private Sub Form_Load()
Dim oTable As TableDef
Modifiable4.RowSourceType = "Value List"
For Each oTable In CurrentDb.TableDefs
Modifiable4.AddItem oTable.Name
Next oTable
End Sub
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

la référence Microsoft DAO 3.6 Object Library est bien activé, mais il me marque toujours le même pb : membre de méthode ou données introuvable.

que dois je faire?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
c'est coché, et il te dit ça....

sur quelle ligne, quell mot ?
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

Private Sub Form_Load()  il me surligne en jaune toute cette ligne
Dim oTable As TableDef
    Modifiable4.RowSourceType = "Value List"
    For Each oTable In CurrentDb.TableDefs
        Modifiable4.AddItem oTable.Name et sur cette ligne me surligne en gris AddItem
    Next oTable
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
avec quelle version d'Access joues tu ?

la ligne grisée, ca vient du fait qu'il ne connait pas la méthode AddItem de ton objet.
j'ai testé avec succès sous Access 2003
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

je suis sous access97.



http://www.commentcamarche.net/forum/affich-4125284-access-2000-liste-des-tables-d-une-bdd

regarde sur ce lien on diré kil y a la meme erreur que moi mais unE des personnes dit d'utiliser une autre méthode peut-être sais tu quelle autre méthode utilisée?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
j'ai ajouté la solution sur le site dont tu as fournit le lien
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

merci pour ton aide tout fonctionne parfaitement.
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

Encore une petite chose est ce qu'il est possibLE d'ajouter une instruction pour que les tables msys ne s'affiche pas?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
oui, il s'agit simplement de tester les quatres premières lettres de oTable.Name ...

For Each oTable In CurrentDb.TableDefs
If Left$(oTable.Name, 4) <> "MSys" Then
If LenB(sBuffer) Then
sBuffer = sBuffer & ";"
End If
sBuffer = sBuffer & oTable.Name
End If
Next oTable
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

je voulais te demnder qu signifie la fonction lenB(sBuffer) qu'est ce qu'elle permet de récupérer ?
Encore merci pour ton aide
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
F2 => Explorateur d'objets
Lenb <Entree>

Function LenB(Expression)
Membre de VBA.Strings
Renvoie le nombre d'octets nécessaires au stockage d'une variable


en gros, si la chaine contient au moins un caractère (donc <>0 )
on ajoute un ";"