[VBA excel] importer table access

outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009 - 19 avril 2007 à 14:01
chaudier37 Messages postés 209 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 juillet 2009 - 5 oct. 2007 à 10:22
bonjour,

Je voudrais pouvoir importer une table access sous excel, et que cette table s'affiche dans une nouvelle feuille de mon classeur excel qui est déjà ouvert.
actuellement, j'ai un bouton qui permet de le faire, avec un xldialogopen, mais sur clic de ce bouton, on doit choisir la table a ouvrir.
Or je voudrais pouvoir sélectionner automatiquement la table à saisir, lorsqu'on a sélectionné le fichier mdb, vu que la table a toujours le meme nom dans la base access.
bizzarement, je ne trouve pas de documentation la-dessus. je pensais que c'était courant de faire ca.

merci pour vos réponses!

11 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 14:14
Salut, peu tu nous donner le code du bouton, comme ca on pars de quelque chose de concret, merci
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
19 avril 2007 à 16:22
salut,
ben j'ai simplement un : application.dialogs(xlopendialog).show pour le moment. ca ouvre ma table sous un nouveau classeur.
mais je voudrais pouvoir juste avoir à sélectionner le ".mdb", et vu que les tables ont toujours le meme nom, qq soit le nom du ".mdb", je voudrais pouvoir ouvrir directement la table comme nouvelle feuille excel à la sélection du ".mdb"
A priori, il faut utiliser les DAO si j'ai bien compris, mais je suis complètement nouveau sur ce domaine (DAO), et je ne trouve pas de doc la-dessus, pis je sais pas du tout dans quelle direction partir pour arriver à mon objectif.

qqn aurait-il des idées SVP ??
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 16:31
Je comprend bien mais excel n'est pas ma spécialité et j'aurais pensé que ton code m'aurait aidé mais c'est pas le cas,

Mais je pense que si Dricke06 passe parla, il devrait savoir (ou encore jrivet). C'est des bons en VBA Excel (ou a defaut ils ne dont pas mauvais en tout cas LOL)
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
19 avril 2007 à 16:33
disons qu'avec un :

Dim MaTable As New DAO.Recordset
MaTable.Open "T_table", CurrentProject.Connection

je dois pouvoir ouvrir la table que je veux.
Or je voudrais pouvoir faire ca depuis Excel. avec choix de la base de données à sélectionner pour l'utilisateur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 19:43
Alors la oui, tu me parles deja plus,

si tu  ca marche mais certain te dirons que DAO c'est un peu vieux alors si tu veux je te donnes l'equivalent en ADO,

dim rs as New ADODB.recordset

rs.open "SELECT * FROM T_table", currentproject.connection, adOpenDynamic, adLockOptimistic

le * signifie que tu prends tous les champs de la table.

si tu veux utiliser une variable, tu fais

rs.open "SELECT * FROM" & T_table, currentproject.connection, adOpenDynamic, adLockOptimistic

Si tu as des questions je te repondrais demain

salut
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 avril 2007 à 00:16
Et tant que DAO fonctionnera... (personnellement, je l'espère...)

Dim Db as Database
Dim Rs as Recordset
Set db = Workspaces(0). Opendatabase ("Le nom de la base.mdb",False,False)
Set Rs = db.OpenRecordset("Select * from Matable")
Range("A1").CopyFromRecordset Rs

Fais des recherches dans l'aide ou sur ce site pour les mots en gras.

MPi
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
20 avril 2007 à 10:14
yes, merci !!
j'étais pas loin, il me manquait le copyfromrecordset.
seulement, il y a quand meme un pbm. en effet, si j'ai bien toutes les colonnes, je n'ai pas les noms des paramètres qui s'affichent, uniquement les valeurs de chaque colonne.
sais tu comment récupérer aussi les noms de paramètres ??
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
20 avril 2007 à 10:19
sinon, par rapport à ta réponse Nicko11, j'ai un message d'erreur sur la déclaration de variable rs.
pourtant j'ai bien veillé à activer le Microsoft DAO 3.5 etc dans le menu tools
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 10:25
Salut,

en fait, il faut ADO. Microsoft Active Data objet 2.8 library je crois.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 avril 2007 à 11:50
Afficher les paramètres ? Tu parles de "nom de champ" ?
Si oui, tu peux utiliser TableDef  (toujours avec DAO)
Je pense qu'avec ADO, il faut passer par ADOX ... (?)

Sub Masub()
    Dim Champ As Field
    For Each Champ In Db.TableDefs("NomDeLaTable").Fields
        MsgBox Champ.Name  'Inscrire les noms de champs
    Next

MPi
0
chaudier37 Messages postés 209 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 juillet 2009
5 oct. 2007 à 10:22
Pour gerer les changements de menus :
ils sont dans une colonne qui elle même est reliée à un combobox. quand l'opérateur veut changer les menus il fait appel à ce userform et selectionne dans le combobox chaque menu qu'il veut et appuie sur le bouton correspondant à l'endroit où i lveut pacer ce menu.
les menus selectionés vont se mettre dans une colonne et les commandButton caption de la carte qui sont reliés à cette colonne changent automatiquement.
0
Rejoignez-nous