Sub Importer_TXT()
Dim t#, chemin$, fichier$, ncol%, texte$, i&, s, n&, a(), col%, resu(), dest As Range
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = "Source.txt" 'à adapter
ncol = 8 'nombre de colonnes à copier
'---lecture séquentielle du fichier texte---
Open chemin & fichier For Input As #1 'ouverture du fichier texte
Do While Not EOF(1) 'EndOfFile: fin du fichier
Line Input #1, texte 'récupère la ligne
i = i + 1
s = Split(texte, vbTab) 'séparateur : tabulation
If i = 1 Or s(3) = "4GF" Then 'critère en 4ème colonne
n = n + 1
ReDim Preserve a(1 To ncol, 1 To n)
For col = 1 To ncol
a(col, n) = s(col - 1)
Next col
End If
Loop
Close #1 'fermeture du fichier texte
'---transposition---
ReDim resu(1 To n, 1 To ncol)
For i = 1 To n
For col = 1 To ncol
resu(i, col) = a(col, i)
Next col, i
'---restitution dans la feuille Excel quand c'est possible---
With Feuil1 'CodeName à adapter
If .FilterMode Then .ShowAllData
Set dest = .[A1] '1ère cellule de destination, à adapter
If n > .Rows.Count - dest.Row + 1 Then MsgBox "Tableau trop grand pour Excel !", 48: Exit Sub
If n Then dest.Resize(n, ncol) = resu
dest.Offset(n).Resize(.Rows.Count - n - dest.Row + 1, ncol).ClearContents 'RAZ en dessous
With .UsedRange: End With 'actualise les barres de défilement
End With
MsgBox "Durée " & Format(Timer - t, "0.00 \sec"), , "Import"
End Sub