VBA récupération des données dans excel issuent d'une requête access

Signaler
Messages postés
2
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
4 mai 2010
-
Messages postés
2
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
4 mai 2010
-
Bonjour,

Existe-t-il un moyen plus propre que l'enregistreur de macro pour récupérer dans excel le résultat d'une requête access ? (voir ci-dessous)

Je vous remercie par avance de votre réponse.

Philippe

With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\aaa\bdd\02 reporting.mdb;Mode=Share Deny Write;Exten" _
, _
"ded Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5" _
, _
";Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Databa" _
, _
"se Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=Fa" _
, "lse;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), _
Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("30 Relance FR")
.Name = "02 reporting"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "F:\aaaa\bdd\02 reporting.mdb"
.Refresh BackgroundQuery:=False
End With

3 réponses

Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

deux possibilités soit tu récupére avec Excel tes données en utilisant données externes, donc tes données seront liées à la requête, soit tu exporte directement ta requête dans Excel, ce sujet ayant déja été traité tu trouvera tout le nécessaire sur le site, la méthode à utiliser est
TransferSpreadsheet
La syntaxe pour exporter les données sera de ce type
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, nomrequête, cheminfihierexcel, True, Rangedest
remplace nomrequête,cheminfihierexcel et Rangedest par tes paramètres et le tour est joué
Messages postés
68
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
25 avril 2013

Salut, le forum
tu peux aussi dans un module sur Excel utiliser la connexion via DAO comme ceci:
Sub connect_base_access()
Rem --- Nécessite de COCHER Microsoft DAO x.x Object Library dans
Rem --- Editeurs VBA => Outils => Références... => Microsoft DAO x.x Object Library
Dim Datbas As DAO.Database
Dim Recset As DAO.Recordset
Dim strSQL As String

'Chemin ou se trouve la base Access
Set Datbas = DAO.OpenDatabase("C:\Test.mdb", False, False)

'Requete SQL de Selection
strSQL = "SELECT Champ1 FROM MaTable "

' execution requete
Set Recset = Datbas.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
    
'Copie le résultat à partir de la cellule A1 de la feuille Excel
Range("A1").CopyFromRecordset Recset

'deconnexion de la base
Datbas.Close
End Sub


Ce code se connecte à la base et fait une requete selection sur la colonne "Champ1" de la table "MaTable" et colle le résultat dans la feuille active d'Excel à partir de la Cellule A1.
Bien entendu il faut adapter à tes besoins.
@+
Messages postés
2
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
4 mai 2010

Bonjour,

Merci pour les réponses.

En fait je fais mes requêtes dans access car elles sont complexes et je récupère le résultat dans excel.

Donc c'est bien le code vb que je recherche (je n'ai pas eu le temps de tester vos propositions)

Bonne journée

philippe