Date | Heure | Temps |
16/06/2019 | 20:24:47 | 00:00.0 |
Sub Import()
Dim fichier$, texte$, lig&, a$(), n&, b(), s, ub%
fichier = ThisWorkbook.Path & "\Fichier TXT.txt" 'à adapter
Open fichier For Input As #1 'accès au fichier
Do While Not EOF(1) 'EndOfFile: fin du fichier
Line Input #1, texte 'récupère la ligne
If lig Mod 450 = 0 Then
ReDim Preserve a(n) 'base 0
a(n) = texte
n = n + 1
End If
lig = lig + 1
Loop
Close #1
'---transposition---
ReDim b(n, 2) 'base 0
For n = 0 To UBound(a)
s = Split(a(n), ";")
ub = UBound(s)
If ub > -1 Then b(n, 0) = CDate(s(0))
If ub > 0 Then b(n, 1) = s(1)
If ub > 1 Then b(n, 2) = s(2)
Next
'---restitution---
With [A2]
.Resize(n, 3) = b
.Resize(n, 3).Sort .Cells, xlAscending, Header:=xlNo 'tri sur les dates
.Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
Bonjour Job75,J'ai testé avec un fichier texte de 1 000 000 de lignes : ma macro s'exécute en 1, 6 seconde chez moi.
Merci pour l'info, je n'ai jamais fait de benchmark là dessus.L'intérêt des tableaux VBA c'est qu'ils permettent de remplir une feuille Excel d'un seul coup, c'est beaucoup plus rapide.