Bonsoir dazibao11 ,
Sans conviction, un essai dans le fichier .xlsm joint. Cliquer sur bouton Hop!
Ne pas oublier de définir la constante "Const CheminNomFichier "pour indiquer le chemin et le nom du fichier .txt.
En fichiers joints, le classeur avec la macro et un fichier .txt à sauvegarder sur votre disque.
le code est dans module1 :
Sub ImporterTXT()
Const CheminNomFichier = "C:\toto\dazibao11-test-txt-v1.txt"
Dim t, i&, j&, s, r, max&
Application.ScreenUpdating = False
With ThisWorkbook.ActiveSheet
.Range("a1").CurrentRegion.Clear
Workbooks.OpenText Filename:=CheminNomFichier, DataType:=xlFixedWidth
DoEvents
Columns(1).Copy .Columns(1)
ActiveWorkbook.Close SaveChanges:=False
t = .Columns(1).Resize(.Cells(Rows.Count, "a").End(xlUp).Row)
ReDim r(1 To UBound(t), 1 To 1)
For i = 1 To UBound(t)
If t(i, 1) <> "" Then
s = Split(t(i, 1), "|")
If UBound(s) + 1 > max Then max = UBound(s) + 1: ReDim Preserve r(1 To UBound(r), 1 To max)
For j = 0 To UBound(s): r(i, j + 1) = s(j): Next
End If
Next i
.Range("a1").Resize(UBound(r), UBound(r, 2)).NumberFormat = "@"
.Range("a1").Resize(UBound(r), UBound(r, 2)) = r
End With
End Sub