Il est assez facile et très rapide de lire le contenu des fichiers texte sous toutes leurs formes dans VBA. Et cela même pour des fichiers assez volumineux (de plusieurs dizaines de mégaoctets).
Il s'agit d'une fonctionnalité primordiale si vous travaillez avec des données: vous pouvez alors charger les données directement dans une variable sans passer par (par exemple) les Feuilles du Classeur Excel. Elle vous permet aussi de lire les fichiers log ce qui est important quand vous souhaitez de créer une application un peu plus sophistiquée avec VBA. Vous en aurez besoin si vous voulez apporter des modifications ou faire des recherches dans les fichiers de données tels que des .csv
. Et si vous souhaitez utiliser les Formulaires, c'est un très bon moyen de remplir vos ListBox
et vos ComboBox
.
A titre personnel, je vous avoue utiliser cette fonctionnalité presque quotidiennement…
Notion du "fichier texte" en VBA
Par "fichier texte", on peut considérer des fichiers qui sont "lisibles" après ouverture dans un éditeur de texte (par exemple Notepad). Habituellement, ce sont des fichiers journaux, des fichiers de données, des fichiers de certains langages de programmation (VBS, HTML, CSS,…) ou tout simplement des fichiers de "texte clair" (sans formatage).
Le suffixe n'a pas d'importance lors de la lecture/l'import via VBA. On peut donc travailler avec des fichiers comme:
.txt
.csv
.log
.html
.json
- …
Il ne s'agit donc pas de fichiers binaires, images, vidéos, archives, etc.
Code de la Fonction VBA pour lire le contenu d'un fichier texte
Voici donc la fonction VBA qui permet d'extraire le contenu de fichier texte et de le placer dans une variable pour une utilisation ultérieure (analyse, découpage, sauvegarde…).
Cette fonction utilise un argument de type String
qui contient le chemin complet du fichier que l'on veut lire/importer. Son utilisation est donc très simple.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Function LireFichierTexte(ByVal MonFichier As String) As String 'par: https://excel-malin.com On Error GoTo LireFichierTexteErreur Dim IndexFichier As Integer IndexFichier = FreeFile() Open MonFichier For Binary Access Read As #IndexFichier LireFichierTexte = Space$(LOF(IndexFichier)) Get #IndexFichier, , LireFichierTexte Close #IndexFichier Exit Function LireFichierTexteErreur: Close #IndexFichier LireFichierTexte = "" End Function |
Pour rappel: pour pouvoir mieux gérer les éventuelles erreurs, il est judicieux de vérifier si le fichier que l'on veut lire existe. Pour cela, la fonction pour vérifier si le fichier existe peut s'avérer fort utile.
Et pour votre information, cette fonction "ne bloque pas" le fichier texte pendant qu'elle le lit. Elle accède le fichier uniquement en mode "lecture" et ne l'ouvre donc pas. Ce qui signifie que le fichier n'est pas bloqué pour les autres utilisateurs (ou procès).
Exemple pratique de lecture de contenu d'un fichier texte en VBA
La procédure qui suit montre l'utilisation en pratique de la fonction LireFichierTexte
. Vous pouvez l'utiliser telle quelle (il suffit de copier & coller les deux codes VBA) et simplement changer le nom de fichier à lire.
Ce code va donc lire le contenu du fichier text et ensuite afficher ce contenu dans une fenêtre de dialogue (MsgBox
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub ExempleLectureFichierTexte() 'par: https://excel-malin.com On Error GoTo TestErreur Dim ContenuFichier As String Dim MonFichier As String MonFichier = "C:\Test\MonFichier.txt" 'l'emplacement et le nom du fichier texte ContenuFichier = LireFichierTexte(MonFichier) 'appelle la fonction "LireFichierTexte" MsgBox ContenuFichier 'affiche le contenu du fichier Exit Sub TestErreur: MsgBox "Le fichier n'a pas pu être lu..." End Sub |
Pour aller plus loin en VBA…
Travail avec des fichiers texte est une opération courante dans les applications avancées en VBA. Et ce sujet est largement développé ici sur Excel-Malin.com
- VBA: suivre l’activité de l’utilisateur (log) (tutoriel)
- Manipulation basique des fichiers en VBA (tutoriel)
- Obtenir code source HTML d’une page web (code VBA)
- VBA: Sauvegarder un texte dans un fichier (code VBA)
- Lire un fichier texte ligne par ligne (code VBA)
Et voici quelques autres articles qui pourraient vous être utiles:
- Liste de toutes les fonctions VBA
- Cours VBA en ligne "VBA: Droit au but" (gratuit)
- Faire une SOMME en VBA
- Comment utiliser la fonction RECHERCHEV en VBA – c'est simple et rapide!
Commentaire sur “VBA: lire le contenu de fichier texte”
Bonjour,
Est-il également possible de n'extraire qu'une valeur du fichier texte, comme par exemple un max date ?