Enlever les retours chariot d'un fichier texte [Résolu]

denirobert 13 Messages postés jeudi 3 juillet 2003Date d'inscription 5 avril 2006 Dernière intervention - 3 mars 2005 à 12:25 - Dernière réponse : crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention
- 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
Afficher la suite 

6 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 3 mars 2005 à 13:43
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
denirobert 13 Messages postés jeudi 3 juillet 2003Date d'inscription 5 avril 2006 Dernière intervention - 3 mars 2005 à 14:14
0
Utile
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
crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 3 mars 2005 à 15:00
0
Utile
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
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 3 mars 2005 à 17:55
0
Utile
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
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 3 mars 2005 à 18:34
0
Utile
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!!)
crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 3 mars 2005 à 22:53
0
Utile
Une string est effectivement limité mais la limite est à 2^31 caractères soit 2 milliards de caractères

Christophe R

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.