OVH Cloud OVH Cloud

Excel et Access

1 réponse
Avatar
Kamel
Bonsoir,

Quelqu'un saurait-il comment instancier un objet application Access en VBA à
partir de Excel pour pouvoir executer une requete sur une feuille de Excel.
Je voudrais avoir les résultats sur une deuxième feuille de la meme
application Excel.
J'ai essayé MSQuery mais les requêtes sont assez limitées ...


J'ai deja posé cette question hier et j'ai eu cette réponse:


Dim bd as DAO.Database, Enr as DAO.Recordset
set bd = Opendatabase("c:\.......\jj.mdb")
set enr = bd.OpenRecordset("Select * from NomTableouReq where champ = 10
order by champ3",dbOpenSnapshot )
if Not enr.eof then
Worksheets("feuil2").range("A2").CopyFromRecordset enr
end if
là tu fermes enr , bd
il faut aussi faire une boucle sur le nom des champs pour remplir la ligne 1

Je n'ai pas de fichier access qui contient la base de données, ni la
requête. Mais, les données se trouvent sur la 1ere feuille de mon classeur.
Je voudrais donc executer une requête tapée en dure en VBA et avoir le
résultat sur la 2eme feuille. Pour cela, mon idée serait d'instancier un
objet Application Access et de lui faire enregistrer les données de la 1ere
feuille Excel et executer la requete ....

Merci bcp !!!

1 réponse

Avatar
michdenis
Bonjour Kamel,

pour exécuter cette macro, tu dois ajouter cette référence
"Microsoft DAO 3.6 objects librairy" à ton classeur excel.

Pour ce faire, dans l'éditeur de macro, barre des menus / outils / référence et tu coches dans la liste la référence.

Dans un module standard, tu copies ceci et tu devras modifier :

Le chemin et le nom de ta base de données.
Définir le texte de la requête que tu veux voir exécuter.
Définir la feuille de ton classeur où seront copiées les données

C'est une réponse similaire à celle de Pierre...

ça ne fonctionne pas ?

'-----------------------------------
Sub Access_Excel()

Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim Requete As String

Requete = "Select * from Employés"

Set Db = OpenDatabase("C:excelcomptoir.mdb")
Set Rs = Db.OpenRecordset(Requete)

If Not Rs.EOF Then
With Worksheets("Feuil1").Range("G25")
.CopyFromRecordset Rs
End With
End If

Rs.Close: Db.Close
Set Rs = Nothing: Set Db = Nothing

End Sub
'-----------------------------------


Salutations!



"Kamel" a écrit dans le message de news:OyvR6ti$
Bonsoir,

Quelqu'un saurait-il comment instancier un objet application Access en VBA à
partir de Excel pour pouvoir executer une requete sur une feuille de Excel.
Je voudrais avoir les résultats sur une deuxième feuille de la meme
application Excel.
J'ai essayé MSQuery mais les requêtes sont assez limitées ...


J'ai deja posé cette question hier et j'ai eu cette réponse:


Dim bd as DAO.Database, Enr as DAO.Recordset
set bd = Opendatabase("c:.......jj.mdb")
set enr = bd.OpenRecordset("Select * from NomTableouReq where champ = 10
order by champ3",dbOpenSnapshot )
if Not enr.eof then
Worksheets("feuil2").range("A2").CopyFromRecordset enr
end if
là tu fermes enr , bd
il faut aussi faire une boucle sur le nom des champs pour remplir la ligne 1

Je n'ai pas de fichier access qui contient la base de données, ni la
requête. Mais, les données se trouvent sur la 1ere feuille de mon classeur.
Je voudrais donc executer une requête tapée en dure en VBA et avoir le
résultat sur la 2eme feuille. Pour cela, mon idée serait d'instancier un
objet Application Access et de lui faire enregistrer les données de la 1ere
feuille Excel et executer la requete ....

Merci bcp !!!