Macro d'importation données Access vers Excel (DAO object) [Résolu]

Signaler
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
-
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012
-
Bonjour à tous,


Je cherche à importer des données d'une base Access vers Excel de façon automatique via une macro. Après de longue recherche, j'ai vu qu'il fallait activer les paramêtre ADO dans le projet VBA.

Il en résulte le code suivant:

Sub CopyFromRecordset_DAO()



     Dim Db1 As Database

     Dim Rs1 As Recordset

     ' Ouverture de la base de données

     Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\StationData.mdb")

     ' Ouverture de la table Factures

     ' Un objet Recordset représente les enregistrements d'une table

     Set Rs1 = Db1.OpenRecordset(Name:="Donnees", Type:=dbOpenDynaset)

     ' Effacement des données existantes dans la WorkSheet (sauf les titres)

     ' et copie des enregistrements

     With Worksheets("DonneesData").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



Le problème c'est que cela ne fonctionne pas à la ligne

Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\StationData.mdb")


Je pence que c'est le ThisWorkbook.Path qui pose problème car effectivement, je n'ai déclarer nul part le chemin d'accet de la mase de donnée

Le chemin est:

K:\Amelioration\donnees\machine\NomDeLaDataBase


Es ce que quelqu'un connait ce type de macro et peux me dire comment modifier le code pour qu'il soit fonctionnel ?



D'avance merci pour votre aide et le temps consacré à ma questions


Meilleur salutation



Vorens

2 réponses

Messages postés
42
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
12 juin 2012

Re,


J'avais finalement trouvé comment faire par moi même mais je te remercie quand même pour la réponse.

Voici ma solution:


NomFichier = "StationData"
FichierFini = CheminAcce & NomFichier & ".mdb"

Sheets("Importation").Activate

     Dim Db1 As Database

     Dim Rs1 As Recordset
     
     

     ' Ouverture de la base de données

     Set Db1 = DBEngine.OpenDatabase(FichierFini)

     ' Ouverture de la table Factures

     ' Un objet Recordset représente les enregistrements d'une table

     Set Rs1 = Db1.OpenRecordset(Name:="Donnees", Type:=dbOpenDynaset)

     ' Effacement des données existantes dans la WorkSheet (sauf les titres)

     ' et copie des enregistrements

     With Worksheets("Importation").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




Cordialement
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Je pense que ton analyse du problème est la bonne.

je te propose le code suivant que tu devras adapter.
Set Db = OpenDatabase("K:\Amelioration\donnees\machine\StationData.mdb",False, False)

Set table = Db.OpenRecordset("SELECT * FROM MA_TABLE") 


Remarque:

Il y a un des deux false que tu peux remplacer par dbOpenDynaset mais c plus le quelle . Si tu laisse false false alors l'ouverture serra par défaut ... je me souvient plus et je ne sais pas si cela t'arrange. Mais comme cela le code fonctionne.

N'oublie pas de finir ton cade par
table.close
set table = nothing
Db.close
set Db = nothing