VBA: lire un fichier texte ligne par ligne

VBA: lire 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).

Comme c'est indiqué dans les commentaires dans le code, le texte de la ligne se trouve dans la variable ContenuLigne. C'est donc avec cette variable que vous devez travailler pour récupérer le texte de la manière que vous souhaitez.

Si vous voulez par exemple d'ajouter certaines lignes sur une Feuille du Classeur, je vous conseille d'utiliser un compteur qui vous facilitera l'ajout des lignes dans la Feuille.

EXEMPLE: Si vous souhaitez extraire toutes les lignes plus longues que 10 caractères du fichier "D:\TEST\test.txt" et les ajouter sur la Feuille "Resultat", vous pouvez le faire de manière suivante:

 

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…

Plus sur la gestion des textes en VBA

Voici quelques autres articles sur Excel-Malin.com qui concernent le travail avec des données textuelles qui pourraient vous être utiles:

Pour aller plus loin en VBA

Et pour finir, quelques autres articles pratiques pour votre travail en VBA…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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