c0rentin59
XLDnaute Nouveau
Bonsoir à tous,
J'ai créer une Macro (en mode enregisteur) pour importer des données.
Celle-ci consiste à importer des données d'un fichier A dans un autre fichier B.
Or le nom du fichier A varie.
il se nomme : "m6 10102010 avant.xls", si nous somme le 10 octobre 2010.
La partie de code doit donc comporter une variable et l'utilisateur
indique la date grâce à un "inputbox"
La variable prend donc la valeur de la date. ex "10102010"
Ensuite il faut insérer la variable dans le code de l'importation des données.
Voilà ce que ça donne mais le résultat > erreur
voici le code:
Public Sub importation()
'Déclaration des variables
Dim v As Integer
' 1ère étape: On demande la date du fichier pour lequel on veut importer les données.
v = InputBox("Entrer la date sous la forme 'jjmmaaaa'", "Date")
' 2ème étape: On copie les éléments du fichier "m6 avant xx/xx/xxxx" (fichier A) dans l'onglet "av" du fichier B.
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Users\Desktop\test\m6 " & v & " avant.xls;Mode=" _
, _
"Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDBatabase Passw" _
, _
"ord="""";Jet OLEDB:Engine Type=35;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tran" _
, _
"sactions=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" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Feuil1$")
.Name = "m6 " & v & " avant"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "C:\Users\Desktop\test\m6 " & v & " avant.xls"
.Refresh BackgroundQuery:=False
End With
end sub
Le code n'est pas très clean mais mais compétence en VB ne me permettent pas de le créer sans l'enregisteur de macro.
Si qq à une piste...
Ca m'intéresse
A toute!
J'ai créer une Macro (en mode enregisteur) pour importer des données.
Celle-ci consiste à importer des données d'un fichier A dans un autre fichier B.
Or le nom du fichier A varie.
il se nomme : "m6 10102010 avant.xls", si nous somme le 10 octobre 2010.
La partie de code doit donc comporter une variable et l'utilisateur
indique la date grâce à un "inputbox"
La variable prend donc la valeur de la date. ex "10102010"
Ensuite il faut insérer la variable dans le code de l'importation des données.
Voilà ce que ça donne mais le résultat > erreur
voici le code:
Public Sub importation()
'Déclaration des variables
Dim v As Integer
' 1ère étape: On demande la date du fichier pour lequel on veut importer les données.
v = InputBox("Entrer la date sous la forme 'jjmmaaaa'", "Date")
' 2ème étape: On copie les éléments du fichier "m6 avant xx/xx/xxxx" (fichier A) dans l'onglet "av" du fichier B.
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Users\Desktop\test\m6 " & v & " avant.xls;Mode=" _
, _
"Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDBatabase Passw" _
, _
"ord="""";Jet OLEDB:Engine Type=35;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tran" _
, _
"sactions=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" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Feuil1$")
.Name = "m6 " & v & " avant"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "C:\Users\Desktop\test\m6 " & v & " avant.xls"
.Refresh BackgroundQuery:=False
End With
end sub
Le code n'est pas très clean mais mais compétence en VB ne me permettent pas de le créer sans l'enregisteur de macro.
Si qq à une piste...
Ca m'intéresse
A toute!