1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Option Explicit
Sub Tst97()
Dim Fichier As Variant
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
If Fichier <> False Then Lire97 Fichier
End Sub
Private Sub Lire97(ByVal NomFichier As String)
Dim chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Sep As String * 1
Dim Debut As Long, Fin As Long
Debut = GetTickCount
Sep = ";"
Cells.Clear
Application.ScreenUpdating = False
Close
NumFichier = FreeFile
iRow = 0
Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1: iRow = iRow + 1
Line Input #NumFichier, chaine
Split97 Ar(), chaine, Sep
For i = LBound(Ar) To UBound(Ar)
Cells(iRow, iCol) = Ar(i)
iCol = iCol + 1
Next i
Loop
Close #NumFichier
Fin = GetTickCount
Application.StatusBar = Format((Fin - Debut) / 1000, "0.00")
Application.ScreenUpdating = True
End Sub
Private Sub Split97(ByRef Ar() As String, ByVal s As String, ByVal sSep As String)
Dim Pos As Integer
Dim i As Long, j As Long
Erase Ar
i = 1: j = 0
Do While i < Len(s)
If Mid(s, i, 1) = sSep Then
ReDim Preserve Ar(j)
Pos = InStr(s, sSep)
Ar(j) = Left(s, Pos - 1)
s = Right(s, Len(s) - Pos)
j = j + 1: i = 0
End If
i = i + 1
Loop
ReDim Preserve Ar(j)
Ar(j) = s
End Sub |
Partager