Import multiple csv |
Titre du sujet : Import multiple csv par FabriceR le 20/02/2016 11:23:07 Bonjour à tous,
Je bloque sur une macro dont le but est l'import de multiple csv dans l'onglet d'un classeur.
Principe: J’ai plusieurs fichiers csv dans un répertoire, ils sont nommés en nombres d'ordre croissant (à partir de 1). Je souhaite que les fichiers soit tous importes dans un onglet de mon classeur les uns à la suite des autres
Ma Macro: Private Sub Import_Data_Click() Dim wbCSV As Workbook Dim wsMstr As Worksheet: Set wsMstr = ThisWorkbook.Sheets("Data") Dim fPath As String: fPath = Worksheets("Menu").Cells(4, 1) 'path to CSV files Dim fCSV As String Dim NextCol As Long Dim FilesInPath As String 'Add a slash at the end if the user forget it If Right(fPath, 1) <> "" Then fPath = fPath & "" End If 'If there are no Excel files in the folder exit the sub FilesInPath = Dir(fPath & "*.csv") If FilesInPath = "" Then MsgBox "No files found" Exit Sub End If If MsgBox("Clear the existing Data sheet before importing?", _ vbYesNo, "Clear Database?") = vbYes Then wsMstr.UsedRange.ClearContents NextCol = 1 Else NextCol = wsMstr.Cells(6, Columns.Count).End(xlToLeft).Column + 2 End If Application.ScreenUpdating = False 'speed up macro fCSV = Dir(fPath & "*.csv") 'start the CSV file listing Do While Len(fCSV) > 0 'open a CSV file Set wbCSV = Workbooks.Open(fPath & fCSV) 'copy data into master sheet and close source file ActiveSheet.UsedRange.Copy wsMstr.Cells(3, NextCol) wbCSV.Close False 'read next CSV fCSV = Dir NextCol = wsMstr.Cells(6, Columns.Count).End(xlToLeft).Column + 1 Loop Sheets("Menu").Select Application.ScreenUpdating = True MsgBox "Data Import completed" End Sub Mon Problème: La macro fonctionne parfaitement et fait le travail demandé. Par contre l'ordre d'import des fichiers me pause problème. En effet au-delà de 10 fichiers importés, Excel les traitent dans l'ordre suivant: 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21 ... alors qu'évidement je cherche à avoir 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...
Voilà si jamais un des talentueux membres du forum a une piste, je suis preneur ;).
Merci d'avance, Fabrice |
Forums