Private Sub CommandButton1_Click()
Dim chemin$, fichier$, ncol%, resu(), num&, lig&, x, texte, n&, s, ub%, col%, xx
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "*.csv")
ncol = 5 '5 colonnes
ReDim resu(1 To Rows.Count, 1 To ncol)
While fichier <> ""
num = num + 1
lig = 0
x = FreeFile
Open chemin & fichier For Input As #x 'lecture séquentielle du fichier CSV
While Not EOF(1) 'EndOfFile: fin du fichier
lig = lig + 1
Line Input #x, texte 'récupère la ligne
If num = 1 And lig = 1 Or lig > 1 Then 'les en-têtes ne sont copiées qu'une fois
s = Split(texte, ";")
ub = IIf(UBound(s) < ncol - 1, UBound(s), ncol - 1)
n = n + 1
For col = 1 To ub + 1
xx = s(col - 1)
If col = 4 Then If IsDate(xx) Then xx = CDate(xx)
resu(n, col) = xx
Next col
End If
Wend
Close #x 'fermeture du fichier CSV
fichier = Dir
Wend
'---restitition---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A1] '1ère cellule de destination, à adapter
.Resize(n, ncol) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Columns(1).Resize(, ncol).AutoFit 'ajustemrnt largeurs
End Sub