Bonjour,
J'aimerais importer le résultat d'une requête Access dans une feuille Excel définie ou Sheet en cours...
L'importation se fait du fichier Excel !
J'ai enregistré une macro via l'option d'Excel et effectué quelques modifications pour arriver au code suivant :
Il fonctionne très bien tant que je ne bouge pas le fichier Access de place, mais cela fonctionne si je change l'emplacement de tout le répertoire !... ça je ne me l'explique pas...
Exemple :
* J'ai un fichier Excel : c://Test/excel.xlsx
* J'ai un fichier Access avec réquête... : c://Test/access.accdb
Je lance le code vba et cela fonctionne
* Maintenant je change l'emplacement du fichier Access : c://Test/MaJ/access.accdb
Et là, erreur, il ne trouve plus le fichier Access ! Il veut : c://Test/access.accdb
Pourtant vu mon code cela devrait fonctionner, non ?
Ps : monfichier = le chemin complet du fichier Access (j'utilise l'explorateur [Application.GetOpenFilename] pour aller chercher le lien).
ps : je désactive cette ligne ['.ListObject.DisplayName = Tableau_Liste_des_clubs_et_joueurs_2017_2018.accdb_1], car elle ne me semble pas utile, cela fonctionne sans...
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 With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _ "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source= & monfichier & ;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:Sy" _ , _ "stem database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mo" _ , _ "de=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Creat" _ , _ "e System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without " _ , _ "Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _ ), Destination:=Range("$A$1")).QueryTable .CommandType = xlCmdTable .CommandText = Array("Requête - Liste Clubs") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceDataFile = monfichier '.ListObject.DisplayName = Tableau_Liste_des_clubs_et_joueurs_2017_2018.accdb_1 .Refresh BackgroundQuery:=False End With
Avez-vous une idée au problème, existe-t-il un code VBA plus simple ?...
Merci d'avance
Partager