Bonjour,
voici une variante p'être un poil plus rapide conservant le séparateur de ligne du fichier source,
n'étant pas forcément celui par défaut de la plate-forme :
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
| Sub CoupeFichier(ByVal SRC$, MAX%, Optional SEP$ = vbNewLine)
C& = InStrRev(SRC, "."): If Dir(SRC) = "" Or C < 2 Or MAX < 1 Then Beep: Exit Sub
F% = FreeFile
Open SRC For Input As #F
TS = Split(Input(LOF(F), #F), SEP)
Close #F
MAX = MAX - 1
If UBound(TS) > MAX Then
EXT$ = Mid$(SRC, C)
SRC = Left$(SRC, C - 1) & IIf(Mid(SRC, C - 1, 1) = " ", "", " ")
C = -1
Do
D& = C + 1
C = Application.Min(D + MAX, UBound(TS))
N& = N& + 1
ReDim AR(C - D)
For L& = 0 To C - D: AR(L) = TS(D + L): Next
Open SRC & Format$(N, "00") & EXT For Output As #F
Print #F, Join(AR, SEP)
Close #F
Loop Until C = UBound(TS)
Erase AR
End If
Erase TS
End Sub
Sub Demo()
CoupeFichier "D:\Tests\Test .csv", 249
End Sub |
Les paramètres de la procédure sont dans l'ordre le fichier source, le nombre maximum de lignes
et en option le séparateur de ligne, par défaut celui de la plate-forme …
Je vais bientôt être
Off-Line jusqu'en milieu d'après-midi …
__________________________________________________________________________________________
Merci de cliquer sur

pour chaque message ayant aidé puis sur

pour clore cette discussion …
Partager