Supprimer les lignes vides dans un fichier texte

Contenu du snippet

Le module va supprimer les lignes vides du fichier en entrée.
Le string passé en paramètre (fichier$) contient le chemin et le nom du fichier.

Source / Exemple :


' 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
    
    ' 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

Conclusion :


Le fonctionnement est simple, le fichier en entrée est lu ligne par ligne. Si une ligne est vide, elle n'est pas copiée dans le fichier temporaire de destination. Une fois le fichier source à sa fin, on l'efface et on renomme le fichier temporaire avec le nom du fichier source.

A voir également

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.