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 63 64 65 66 67 68 69 70 71 72 73 74
|
Sub ExtractionNew(Fichier As String, NbLig As Long)
Dim WB As Workbook
Dim S As Worksheet
Dim cpt&
Dim numFile&
Dim A$
Dim T()
Dim T2()
Dim ShCount&
Dim i&
Dim j&
Dim k&
Dim deb&
Dim alerte$
i& = FreeFile
'ouvrir et lire le contenu du fichier source
Open Fichier For Input As #i&
Do While Not EOF(i&)
cpt& = cpt& + 1
Line Input #i&, A$
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = A$
Loop
Close #i&
'calculer le nombre de feuilles à ajouter dans le classeur
nbFeuille = WorksheetFunction.RoundUp(cpt& / NbLig, 0)
'séparer le contenu du fichier source dans les feuilles
deb& = 1
For i& = 1 To nbFeuille
If i& * NbLig > cpt& Then
NbLig = cpt& - (NbLig * (i& - 1))
End If
ReDim T2(1 To NbLig, 1 To 1)
k& = 0
For j& = deb& To deb& + NbLig - 1
k& = k& + 1
If Len(T(1, j&)) > 900 Then
T2(k&, 1) = "'" & Left(T(1, j&), 900)
alerte$ = vbCrLf & vbCrLf & _
"ATTENTION : Des lignes comportant plus de 900 caractères ont été limitées à 900 caractères"
Else
If Len(T(1, j&)) > temp Then
temp = Len(T(1, j&))
End If
T2(k&, 1) = T(1, j&)
End If
Next j&
deb& = deb& + NbLig
'ouvrir et écrire le contenu de la feuille dans un fichier texte
cptLig& = 0
Open chemin & "\coupe" & i& & ".txt" For Output As #i&
Do
cptLig& = cptLig& + 1
A$ = T2(cptLig&, 1)
Write #i&, A$
Loop While cptLig& < NbLig
Write #i&, "RECAPITULATION" 'drapeau de fin de fichier
Close #i&
Next i&
End Sub |
Partager