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 ....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 !!!
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" <kamel@bogoss.com> a écrit dans le message de news:OyvR6ti$DHA.2412@TK2MSFTNGP12.phx.gbl...
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 ....
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 ....