Bonsoir,

J'espere ne pas m'être planté de forum...

Voilà mon probleme:
j'ai une base access, qui contient un certains nombre de table, et dans laquelle j'ai créé une requete assez tordu (avec des bonnes grosses jointures de cochons).
Je cherche à appeler cette requete depuis une feuille Excel, via une macro (lancé depuis Excel) qui me remplirait mon classeur excel.
Comment faire?

J'ai chercher un peu sur le net, j'ai trouvé ce bout de code:

Ce programme permet de récupérer les données d'une table Access
par l'intermédiare d'une requête et de les copier dans une feuille Excel.

Définition des éléments utilisés :
Nom de la base de données --> Commandes.mdb
Table possédant les données à récupérer dans Excel --> Factures
Champs de la table Factures --> NoFacture, Client, Date et Solde
Nom de la requête --> Factures pour un client
Code SQL --> SELECT Factures.Nofacture, Factures.Client, Factures.Date, Factures.Solde FROM Factures
WHERE (((Factures.Client) Like "ALLEE DES VINS"));
Feuille de calcul Excel recevant les données de la table; --> DonnéesDataBase

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub CopyFromRecordset_DAO()
 
     Dim Db1 As Database
 
     Dim Rs1 As Recordset
 
     ' Ouverture de la base de données
 
     Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\Commandes.mdb" )
 
     ' Ouverture de la table Factures
 
     ' Un objet Recordset représente les enregistrements d'une table
 
     Set Rs1 = Db1.OpenRecordset( Name := "Factures pour un client" , Type :=dbOpenSnapshot)
 
     ' Effacement des données existantes dans la WorkSheet (sauf les titres)
 
     ' et copie des enregistrements
 
     With Worksheets( "DonnéesDataBase" ).Range( "A2" )
 
          With Selection.CurrentRegion
 
               Intersect(.Cells, .Offset( 1 )).Select
 
          End With
 
          Selection.ClearContents
 
          .CopyFromRecordset Rs1
 
     End With
 
     'Fermeture de la Base de données
 
     Db1.Close
 
End Sub
Comme j'y connais rien en VBA (et oui désolé), j'ai copié, collé et adapté (quand même) ce code, mais j'ai un plantage à l'execution, "Type non défini par l'utilisateur"....

Merci d'avance d'éclairer ma (sombre) lanterne