VBA: lire un fichier texte ligne par ligne


Après la fonction permettant de charger le contenu d'un fichier texte en VBA, voici le code VBA qui vous permettra de lire un fichier texte ligne par ligne.

Il suffit d'indiquer le chemin complet (chemin & nom) du fichier texte qui doit être traité  et le code effectuera une itération (Loop) dans le contenu du fichier en vous laissant facilement accéder à chaque ligne séparément. Ce code VBA est prêt à l'emploi – il suffit de le copier / coller dans votre Projet VBA et vous n'aurez qu'à ajouter votre code à exécuter pour chaque ligne (comptage, vérifications, copie des lignes spécifiques,…).

Ceci peut être très utile par exemple dans le cas où vous avez un fichier de données (.csv) et vous voulez travailler seulement avec certaines lignes. Le code VBA que je vous propose peut, entre autre, servir de base pour trier les données avant de les copier vers une Feuille Excel ou même avant d'en créer un nouveau fichier texte…

Lire et traiter un fichier texte ligne par ligne en VBA

Le code suivant est assez explicite et peut facilement être transformé en une fonction. Votre code VBA pour gérer les lignes doit être placé à l'endroit indiqué dans les commentaires (lignes: 18-19).

Sub LireFichierTexteParLigne()
'par: https://excel-malin.com

Application.ScreenUpdating = False
On Error GoTo CodeErreur

Dim IndexFichier As Integer
Dim MonFichier As String
Dim ContenuLigne As String

MonFichier = "C:\MonDossier\MonFichier.txt" '<-- mettez ici le nom du fichier à lire
IndexFichier = FreeFile()
Open MonFichier For Input As #IndexFichier 'ouvre le fichier

While Not EOF(IndexFichier) '
    Line Input #IndexFichier, ContenuLigne     ' lecture du fichier ligne par ligne: la variable "ContenuLigne" contient le contenu de la ligne active
    
    'ajoutez ici votre code à appliquer pour chaque ligne
    '...
    
Wend

Close #IndexFichier ' ferme le fichier
Application.ScreenUpdating = True
Exit Sub

CodeErreur:
MsgBox "Une erreur s'est produite..."
Application.ScreenUpdating = True
End Sub

Remarques pratiques sur la lecture des fichiers texte en VBA

Voici quelques remarques concernant l'utilisation de ce code:

    • Le "fichier texte", ne veut pas nécessairement dire un fichier avec suffixe .TXT. Il s'agit de tout fichier dont le contenu a la forme du texte lisible. Il peut donc s'agir des fichiers de données (comme per exemple .CSV), des pages web (.PHP ou .HTML), des fichiers journaux (.LOG ou autre) ou encore des fichiers XML
    • Pour éviter des erreurs lors de l'exécution de ce code, il peut être utile d'y ajouter la vérification si le fichier texte en question existe. Vous pouvez consulter ce tutoriel: VBA: Vérifier si le fichier existe
    • Ce code utilise le mode For Input pour accéder au contenu du fichier (plus sur la page Microsoft dédiée à ce sujet). Cela a deux avantages:
      1. vous pouvez lire le contenu même d'un fichier qui est déjà ouvert (par vous ou par un autre utilisateur)
      2. vous ne bloquez pas le fichier aux autres applications et / ou utilisateurs. Vous pouvez donc lire par exemple un fichier log sans craindre de le bloquer. Il peut continuer à être utilisé malgré que vous le lisiez…

Pour aller plus loin dans la gestion des textes en VBA

Voici quelques autres articles sur Excel-Malin.com qui pourraient vous être utiles:

 

 

39 0

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.

7 commentaires sur “VBA: lire un fichier texte ligne par ligne”