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

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

6 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 3 mars 2005 à 13:43
3
Merci
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.

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Messages postés
13
Date d'inscription
jeudi 3 juillet 2003
Dernière intervention
5 avril 2006
- 3 mars 2005 à 14:14
0
Merci
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
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
- 3 mars 2005 à 15:00
0
Merci
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
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Dernière intervention
18 mai 2009
- 3 mars 2005 à 17:55
0
Merci
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
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Dernière intervention
18 mai 2009
- 3 mars 2005 à 18:34
0
Merci
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!!)
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
- 3 mars 2005 à 22:53
0
Merci
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.