Enlever les retours chariot d'un fichier texte

Résolu
denirobert Messages postés 13 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 5 avril 2006 - 3 mars 2005 à 12:25
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 3 mars 2005 à 22:53
j'ai un problème : je dois enlever tous les retours chariots dans un fichier texte mais le pb c que mon programme ne les enlèves pas .
pourtant j'ai tout essayé: vbcr, vblf, vbcrlf, chr(10) chr(13) mais au final toujours les retours chariots et en plus il me manque une ligne du fichier texte
voici ma source

' Fonction qui nettoie un fichier texte des retours chariots (vbcrlf ou vbcr)
Public Function VireRetourChariot(fichier As String)
' Variables locales
Dim buffer As String
Dim fichier2 As String

' Prépare le nom du fichier2
Call PrepareFichTemp(fichier, fichier2)

' Ouverture des fichiers
Open fichier For Input As #1
Open fichier2 For Output As #2

' Premiere lecture
Line Input #1, buffer

' Boucle de traitement
While EOF(1) = False
' Nettoie le buffer
buffer = Trim(buffer)
'buffer = Replace(buffer, vbLf, " ")
buffer = Replace(Replace(buffer, Chr(13), ""), Chr(10), "")
'buffer = Replace(buffer, Chr(10) & Chr(13), " ")
Print #2, buffer
Line Input #1, buffer

Wend

' Fermeture des fichiers
Close #1
Close #2

' Efface le fichier 1
Kill (fichier)

' Renomme le fichier 2 pour remplacer le fichier 1
Name fichier2 As fichier
End Function

merci d'avance

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 mars 2005 à 13:43
Le problème vient de l'instruction Print #2, buffer

qui t'écrit une ligne dans le fichier. Avec la syntaxe utilisée, elle
rajoute systématiquement et automatique un retour chario à la fin de la
ligne.



Essaye peut-etre avec cette syntaxe : Print #2, buffer;


Tu peux virer tes Replace(), a priori ils servent à rien car Line Input te vire automatiquement les CR et LF



<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
3 mars 2005 à 15:00
Essaye cela :

Dim Buffer as string
Open "Fic.txt" for input as #1
Buffer = Input(Lof(1), 1)
Close #1
Buffer = Replace$(Buffer, vbCRLF, " ")
Kill "Fic.txt"
Open "Fic.txt" for output as #1
Print #1, Buffer
Close #1

Christophe R
1
denirobert Messages postés 13 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 5 avril 2006
3 mars 2005 à 14:14
Merci beaucoup, je vais pour voir avance plus vite parce que je travaille sur des fichiers textes de grande taille et ça m'embêtait de devoir enlever quasiment tous les retours chariot à la main
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
3 mars 2005 à 17:55
Le suivant devrait faire le boulot, en effet, le line imput te rend
teout ce qui est entre le point de lecture et le prochain retour a la
ligne, donc sans le retour a la ligne.

le point virgule a la fin du print pose le buffer, sans ajouter de retour.


Open fichier For Input As #1
Open fichier2 For Output As #2

' Premiere lecture
Line Input #1, buffer

' Boucle de traitement
While EOF(1) = False

Print #2, buffer;
Line Input #1, buffer

Wend

Print #2, buffer;


' Fermeture des fichiers
Close #1
Close #2
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
3 mars 2005 à 18:34
Tu peux marquer la reponse de Crenaud76 comme acceptee, je l'ai teste et elle marche.



Je croyait qu'il y avait une limite a la taille des string mais ca marche avec un ficher de 1380Ko!



(Je n'ai pas encore essaye la mienne!!)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
3 mars 2005 à 22:53
Une string est effectivement limité mais la limite est à 2^31 caractères soit 2 milliards de caractères

Christophe R
0
Rejoignez-nous