Bonjour à tous,
une version plus classique
Sub ImporterEnGros()
Dim donnees As Variant
donnees = Application.GetOpenFilename("Text Files (*.csv), *.csv")
If donnees = False Then Exit Sub
Extraction donnees, [_sep], [_lignes]
End Sub
Sub Extraction(Fichier As Variant, Separateur As Variant, taille As Long)
Dim Tableau() As String
Dim f As Worksheet
Dim Resultat
Open Fichier For Input As #1
ligne = 1
Do While Not EOF(1)
Line Input #1, ContenuLigne
Tableau = Split(ContenuLigne, Separateur)
nItems = UBound(Tableau) + 1
If ligne = 1 Then ReDim Resultat(1 To nItems, 1 To 1)
If ligne > 1 Then ReDim Preserve Resultat(1 To nItems, 1 To ligne) ' Preserve ne permet de redimensionner que la dernière dimension d'un tableau avec conservation des données
For i = 0 To UBound(Tableau)
Resultat(i + 1, ligne) = Tableau(i)
Next i
ligne = ligne + 1
If ligne > taille Then
Set f = Sheets.Add(After:=Worksheets(Worksheets.Count))
Resultat = Application.Transpose(Resultat)
f.Cells(1, 1).Resize(UBound(Resultat), UBound(Resultat, 2)) = Resultat
ligne = 1
End If
Loop
Close #1
If ligne > 1 Then
Set f = Sheets.Add(After:=Worksheets(Worksheets.Count))
Resultat = Application.Transpose(Resultat)
MsgBox UBound(Resultat)
If ligne > 2 Then
f.Cells(1, 1).Resize(UBound(Resultat), UBound(Resultat, 2)) = Resultat
Else
f.Cells(1, 1).Resize(1, nItems) = Resultat
End If
End If
End Sub
Si tu as des dates ou des nombres, on peut le traiter en même temps ...
Essaie néanmoins la version PowerQuery proposée par Jean-Eric