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
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"....
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
Merci d'avance d'éclairer ma (sombre) lanterne
Partager