SUPPRIMER LES LIGNES VIDES DANS UN FICHIER TEXTE

Signaler
Messages postés
31
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
23 mai 2003
-
Toumar
Messages postés
7
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 octobre 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/1668-supprimer-les-lignes-vides-dans-un-fichier-texte

Toumar
Messages postés
7
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 octobre 2008

Merci pour ce code très utile ;)
jplafleur2003
Messages postés
1
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
20 novembre 2006

Une erreur c'est glissé dans ce source, a chaque fois que le prog est lancé une ligne est omise a la fin du fichier resultat. la solution est la suivante, a la fin de la boucle on doit écrire la dernière ligne.

' Fonction qui nettoie un fichier texte des blancs
Public Function VireLigneBlanche(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)
' Si il n'est pas vide, copie dans le fichier temp
If Len(buffer) > 0 Then Print #2, buffer
' Lecture suivante
Line Input #1, buffer
Wend
Print #2, buffer
' 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

' Prépare le chemin du fichier temporaire à partir du
' nom du premier fichier
Private Function PrepareFichTemp(fichier As String, fichier2 As String)
' Variables locales
Dim chemin As String
Dim pos As Integer
Dim old_pos As Integer

' Trouve le dernier \
pos = InStr(1, fichier, "", vbBinaryCompare)
While pos <> 0
old_pos = pos
pos = InStr(old_pos + 1, fichier, "", vbBinaryCompare)
Wend

' Extrait le chemin
chemin = Left(fichier, old_pos)

' Sauvegarde le nom final
fichier2 = chemin & "temp.txt"
End Function
cs_joina
Messages postés
31
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
23 mai 2003

j'ai essayé le code et a chaque fois que je relance le comptage de ligne, mon fichier perd une ligne. Si quelqu'un sait pourquoi ça m'interesse.