Bonjour à tous sur le forum,
Je me retrouve fasse à une difficulté.😕😕 Je cherche à faire un macro qui m'ouvrirait un répertoire pour que l'utilisateur puisse sélectionner et lancer un traitement d'import de donnée à partir d'un fichier variable.
J'ai réussi à enregistré un import avec le code suivant qui marche parfaitement :
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=chemin\Deskt\Nomfichier.xlsm;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB: Database Password="""";Jet OLEDB:Engine Type=37;Jet OLEDB: Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create 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;Jet OLEDB:Bypass UserInfo Validation=False"), Destination _
:=Range("$A$1")).QueryTable
.CommandType = xlCmdTable
.CommandText = Array("'NomOnglet$'")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = _
"chemin\Desktop\NomFichier.xlsm"
.ListObject.DisplayName = "Tableau_Base"
.Refresh BackgroundQuery:=False
End With
Cependant, cet import se réalise (par nature) toujours à partir du même fichier.
Je voudrait donc ouvrir un répertoire pour que l'utilisateur puisse choisir le fichier à partir duquel il fera son import.
Le fichier en question peut changer de nom et de répertoire (d'où mon interrogation), cependant sa structure restera totalement identique.
Espérant avoir été suffisamment clair dans l'explication de mon problème, je vous remercie par d'avance pour le temps que vous pourrez accorder à ma requête.😀😀
Cordialement.
Je me retrouve fasse à une difficulté.😕😕 Je cherche à faire un macro qui m'ouvrirait un répertoire pour que l'utilisateur puisse sélectionner et lancer un traitement d'import de donnée à partir d'un fichier variable.
J'ai réussi à enregistré un import avec le code suivant qui marche parfaitement :
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=chemin\Deskt\Nomfichier.xlsm;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB: Database Password="""";Jet OLEDB:Engine Type=37;Jet OLEDB: Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create 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;Jet OLEDB:Bypass UserInfo Validation=False"), Destination _
:=Range("$A$1")).QueryTable
.CommandType = xlCmdTable
.CommandText = Array("'NomOnglet$'")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = _
"chemin\Desktop\NomFichier.xlsm"
.ListObject.DisplayName = "Tableau_Base"
.Refresh BackgroundQuery:=False
End With
Cependant, cet import se réalise (par nature) toujours à partir du même fichier.
Je voudrait donc ouvrir un répertoire pour que l'utilisateur puisse choisir le fichier à partir duquel il fera son import.
Le fichier en question peut changer de nom et de répertoire (d'où mon interrogation), cependant sa structure restera totalement identique.
Espérant avoir été suffisamment clair dans l'explication de mon problème, je vous remercie par d'avance pour le temps que vous pourrez accorder à ma requête.😀😀
Cordialement.
Dernière édition: