Importer fichiers csv par macro VBA
Bobbfr
Messages postés
1
Statut
Membre
-
Zoul67 Messages postés 2001 Statut Membre -
Zoul67 Messages postés 2001 Statut Membre -
Bonjour,
Je cherche à importer plusieurs fichiers csv, chacuns dans un onglet d'un même fichier Excel. Pouvez-vous m'aider ?
Je suis développeur mais je ne m'y connais pas en VBA. J'ai donc enregistré une macro où j'importe un fichier csv donc voici le code :
Et j'ai essayé de l'intégrer dans une boucle où je récupère tous les fichiers csv :
J'ai essayé de le modifier un peu dans différents sens mais j'obtiens toujours des erreurs. Avec ce code là j'ai "Le nom "Source" n'a pas été reconnu. Veuillez vérifier qu'il est correctement orthographié."
Je cherche à importer plusieurs fichiers csv, chacuns dans un onglet d'un même fichier Excel. Pouvez-vous m'aider ?
Je suis développeur mais je ne m'y connais pas en VBA. J'ai donc enregistré une macro où j'importe un fichier csv donc voici le code :
Sub Importer_csv()
'
' Importer_csv Macro
'
ActiveWorkbook.Queries.Add Name:="sdl_ext_acti_admi", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""d:\Profiles\jb\Desktop\Cass\Interface\toExcel\sdl_ext_acti_admi.csv""),[Delimiter="";"", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}})," & Chr(13) & "" & Chr(10) & " #""E" & _
"n-têtes promus"" = Table.PromoteHeaders(#""Type modifié"", [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Type modifié1"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Champ"", type text}, {""Valeur"", type text}, {""Table"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié1"""
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=sdl_ext_acti_admi;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
MsgBox (sdl_ext_acti_admi)
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [sdl_ext_acti_admi]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = "sdl_ext_acti_admi"
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "acti_admi"
End Sub
Et j'ai essayé de l'intégrer dans une boucle où je récupère tous les fichiers csv :
Sub BoucleFichiers()
Dim Chemin As String, Fichier As String
'Définit le répertoire contenant les fichiers
Chemin = "d:\Profiles\jb\Desktop\Cass\Interface\toExcel\"
Fichier = Dir(Chemin & "*.csv")
Do While Len(Fichier) > 0
Tableau = Split(Fichier, ".")
Nom = Tableau(0)
Test = "Chemin & Fichier"
'
' Importer_csv Macro
'
ActiveWorkbook.Queries.Add Name:=Nom, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(" & Chemin & Fichier & "),[Delimiter="";"", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}})," & Chr(13) & "" & Chr(10) & " #""E" & _
"n-têtes promus"" = Table.PromoteHeaders(#""Type modifié"", [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Type modifié1"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Champ"", type text}, {""Valeur"", type text}, {""Table"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié1"""
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & Nom & ";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM " & Nom)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = Nom
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Sheets("Feuil2").Select
Fichier = Dir()
Loop
End Sub
J'ai essayé de le modifier un peu dans différents sens mais j'obtiens toujours des erreurs. Avec ce code là j'ai "Le nom "Source" n'a pas été reconnu. Veuillez vérifier qu'il est correctement orthographié."
A voir également:
- Macro importer fichier csv dans excel
- Fichier bin - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide