SUPPRIMER LES LIGNES VIDES DANS UN FICHIER TEXTE

cs_joina Messages postés 31 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 23 mai 2003 - 11 avril 2003 à 12:47
Toumar Messages postés 7 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 29 octobre 2008 - 14 mars 2008 à 12:43
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
14 mars 2008 à 12:43
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
20 nov. 2006 à 16:42
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
11 avril 2003 à 12:47
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.
Rejoignez-nous