Bonjour à tous,
J'enregistre avec VBA des données en texte délimité par tabulations:
Mon souci est que le fichier qui en résulte contient une ligne supplémentaire à la fin, qui contient uniquement un linebreak.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4InjectFile.SaveAs _ FileName:=InputFile.Path & Application.PathSeparator & "Output.txt", _ FileFormat:=xlText, _ ConflictResolution:=xlLocalSessionChanges
Le logiciel où le fichier doit être injecté ne tolère pas cette ligne supplémentaire.
Je ne peux pas laisser l'utilisateur ouvrir le fichier dans un éditeur de texte pour réparer ça: la base de donnée où on envoie le fichier est trop sensible, et une fausse manœuvre finira forcément par arriver.
J'essaie de réparer ça en ouvrant le fichier et en supprimant le dernier caractère:
Mais même si j'augmente le nombre de caractères supprimés à la fin, c'est le dernier caractère de mes données qui est supprimé au lieu du Linebreak en trop.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub EditTextFile() Dim strFinal As String 'Final string to print to file Dim strLine As String 'Line read from original text file Dim FilePath As String FilePath = "Output.txt" FilePath = ThisWorkbook.Path & Application.PathSeparator & FilePath strFinal = "" Open FilePath For Input As #1 'open the text file for reading Do While Not EOF(1) Line Input #1, strLine recordCounter = recordCounter + 1 strFinal = strFinal + strLine + vbCrLf 'Linebreak Loop strFinal = Left(strFinal, Len(strFinal) - 2) 'Je supprime le Linebreak que j'ai moi-même introduit + 1 caractère Close #1 'close the file Open FilePath For Output As #1 Print #1, strFinal 'overwrite the file with the new string Close #1 End Sub
Je rame depuis plus de 2h là-dessus et je ne trouve pas.
Est-ce qu'une bonne âme pourrait me sauver?
Merci,
Jules
Partager