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

loirei Messages postés 2 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 4 mai 2010 - 28 avril 2010 à 15:03
loirei Messages postés 2 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 4 mai 2010 - 4 mai 2010 à 08:48
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

houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
29 avril 2010 à 13:48
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é
0
rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
29 avril 2010 à 17:47
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.
@+
0
loirei Messages postés 2 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 4 mai 2010
4 mai 2010 à 08:48
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
0
Rejoignez-nous