Option Explicit
Private Function EraseCharTextFile(ByVal sPath As String, NbChar As Long, DeleteLeft As Boolean, AllLine As Boolean) As Boolean
Dim FF As Integer, i As Integer
Dim sBuffer As String, aLines() As String
FF = FreeFile
On Error GoTo MyEnd
Open sPath For Input As #FF
sBuffer = Input(LOF(FF), #FF)
Close #FF
If Right(sBuffer, 2) = vbCrLf Then sBuffer = Left(sBuffer, Len(sBuffer) - 2)
'on vire le saut de ligne fin, s'il y est
If AllLine Then
aLines = Split(sBuffer, vbCrLf)
Open sPath For Output As #FF
If DeleteLeft Then
For i = LBound(aLines) To UBound(aLines)
Print #FF, Right(aLines(i), Len(aLines(i)) - NbChar)
Next i
Else
For i = LBound(aLines) To UBound(aLines)
Print #FF, Left(aLines(i), Len(aLines(i)) - NbChar)
Next i
End If
Close #FF
Erase aLines
Else
If DeleteLeft Then 'donc le début du texte
sBuffer = Right(sBuffer, Len(sBuffer) - NbChar)
Else
sBuffer = Left(sBuffer, Len(sBuffer) - NbChar)
End If
Open sPath For Output As #FF
Print #FF, sBuffer;
Close #FF
End If
EraseCharTextFile = True
Exit Function
MyEnd:
End Function
' exemple d'utilisation
Private Sub Form_Load()
MsgBox "Réécriture du fichier : " & EraseCharTextFile("C:\Chemin\Test.txt", 10, True, False)
' ****** Divers Exemples :
EraseCharTextFile "C:\Chemin\Test.txt", 10, True, False
'>> Supprime les 10 premiers Caractères du fichier
EraseCharTextFile "C:\Chemin\Test.txt", 5, False, True
'>> Supprime les 5 derniers Caractères de chaque lignes du fichier
EraseCharTextFile "C:\Chemin\Test.txt", 2, True, True
'>> Supprime les 2 premiers Caractères de chaque lignes du fichier
EraseCharTextFile "C:\Chemin\Test.txt", 10, False, False
'>> Supprime les 10 derniers Caractères du fichier
EraseCharTextFile "C:\Chemin\Test.txt", 1000, True, False
'>> Supprime les 1000 premiers Caractères du fichier
End Sub