Comment lire un fichier externe (txt, csv,…) avec une fonction Excel VBA ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comment créer une petite fonction personnalisée en VBA, qui vous nous permettre de récupérer très facilement le contenu d’un fichier externe, comme un fichier texte *.txt ou *.csv.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

1. Comment lire un fichier texte avec une fonction Excel

Dans un tutoriel précédent, nous avions vu qu’Excel propose des outils pour pouvoir importer des données depuis un fichier externe, comme un fichier texte.

Pour cette nouvelle partie, nous allons mettre en place une fonction personnalisée, qui va ainsi nous permettre d’exploiter les données de ce fichier directement à l’endroit souhaité.

Cela nous permettra également de l’exploiter très simplement soit dans la feuille de calcul, soit au sein d’une macro VBA.

 

2. Création de la fonction personnalisée LIRE_TXT()

Pour créer cette fonction personnalisée, nous allons tout d’abord devoir nous rendre dans VBE, qui est l’outil de développement des applications VBA.

Pour cela, il existe plusieurs méthodes, la plus simple consistant à utiliser le raccourci clavier [Alt]+[F11].

Une fois dans VBE, nous allons pouvoir créer un nouveau module, qui est une feuille de saisie de code dans laquelle nous allons venir enregistrer notre fonction personnalisée.

Pour cela, nous nous rendons simplement dans le menu Insertion afin de cliquer sur Module :

Excel formation - 2 - Lire un fichier texte avec VBA - 01

Pour créer la fonction personnalisée, il suffit de taper le mot-clé « Function », suivi du nom de la fonction :

Excel formation - 2 - Lire un fichier texte avec VBA - 02

Lorsque nous validons la création de la fonction en appuyant sur la touche [Entrée] du clavier, VBE ajoute la ligne End Function pour fermer cette dernière.

Ainsi, tout ce que nous saisirons entre ces deux lignes sera exécuté à chaque fois que nous appellerons la fonction LIRE_TXT().

Nous allons maintenant revenir sur la première ligne, afin de renseigner un argument pour pouvoir faire fonctionner la fonction.

Cet argument, que nous appelons « chemin » est la variable qui va permettre d’obtenir le chemin permettant d’accéder au fichier texte que nous souhaitons lire.

Pour initialiser un argument, il suffit de saisir son nom et son type entre les parenthèses :

Function LIRE_TXT(chemin As String)
 
End Function 

Ici, chemin est typé en tant que string, étant donné qu’il s’agit d’une chaîne de caractères.

 

3. Comment lire un fichier avec VBA ?

Voyons maintenant comment ouvrir le fichier.

Pour commencer, nous déclarons deux variables qui vont nous être utiles juste après :

  • Ligne : cette variable va nous permettre d’enregistrer le contenu de chaque ligne
  • Texte : cette variable va nous permettre d’enregistrer le contenu de tout le fichier par concaténation des variables « ligne »

 

Dim ligne As String, texte As String

Ici ces deux variables sont typées en tant que String, c’est-à-dire en tant que variables destinées à enregistrer des chaînes de caractères.

Ensuite, pour ouvrir le fichier texte dans la mémoire d’Excel, nous allons devoir utiliser la méthode Open de la manière suivante :

    Open chemin For Input As #1

Ici, nous ouvrons le fichier correspondant à la variable chemin en lecture seule, son contenu étant indexé par « #1 ».

Nous pourrons ainsi nous référer à ce fichier en utilisant simplement le « #1 » pendant le reste du code de la fonction.

Maintenant que le fichier texte est utilisable, nous allons lire chacune des lignes les unes à la suite des autres.

Et pour cela, nous allons mettre en place une boucle Do Until, qui permet d’exécuter une suite d’instruction jusqu’à ce qu’une condition soit remplie (ici, jusqu’à atteindre la fin du document).

Nous ajoutons donc la ligne suivante :

Do Until EOF(1)
Loop

Note : L’instruction EOF() signifie « End Of File », ce qui se traduit par « fin de fichier ».

Puis, à l’intérieur de cette boucle, nous pourrons obtenir le contenu de la ligne en cours d’analyse par l’instruction Line Input, laquelle va enregistrer la ligne dans la variable ligne :

    Do Until EOF(1)
        Line Input #1, ligne
    Loop

Pour stocker l’intégralité du contenu du fichier texte dans la variable texte, ligne après ligne, nous allons simplement ajouter le contenu de la variable ligne à la suite de son propre contenu, en utilisant l’esperluette pour effectuer une concaténation.

    Do Until EOF(1)
        Line Input #1, ligne
        texte = texte & ligne
    Loop

Et si nous souhaitons conserver le retour à la ligne, nous pouvons encore ajouter ce dernier en ajoutant « Chr(13) & Chr(10) à la fin :

    Do Until EOF(1)
        Line Input #1, ligne
        texte = texte & ligne & Chr(13) &  Chr(10)
    Loop

Maintenant que nous avons extrait le contenu du fichier texte pour l’enregistrer dans la variable texte, nous pouvons libérer la mémoire de la machine en fermant ce dernier :

    Close #1

Il ne reste plus qu’à retourner le contenu de la variable texte en tant que résultat de la fonction :

    LIRE_TXT = texte

Et voilà, notre macro est maintenant terminée, nous pouvons la tester avec une macro VBA :

Excel formation - 2 - Lire un fichier texte avec VBA - 03

Lorsque nous lançons la macro test, Excel nous affiche un message avec le contenu du fichier texte passé en argument :

Excel formation - 2 - Lire un fichier texte avec VBA - 04

Nous pouvons également récupérer ce contenu dans une cellule Excel en appelant la fonction comme nous le ferions pour n’importe quelle fonction Excel :

Excel formation - 2 - Lire un fichier texte avec VBA - 05



Articles qui pourraient vous intéresser

Comment protéger efficacement un classeur Excel en utilisant une clé USB comme protection physique ?
Comment lire un fichier externe (txt, csv,…) avec une fonction Excel VBA ?
Comment créer un arbre généalogique en quelques minutes sur Excel ?
Comment lire un fichier externe depuis un classeur sans VBA Excel ?
Comment consolider plusieurs classeurs Excel dans un classeur unique ?
Comment automatiser la mise à jour des formules Excel ?
Comment vérifier qu’une adresse mail est valide sur Excel ?
Comment protéger efficacement le contenu de vos fichiers Excel ?
Comment afficher une image différente en fonction de la valeur d’une cellule Excel (sans VBA) ?
Comment faire clignoter une cellule Excel ? La mise en forme dynamique
COMMENT EFFACER ET PERSONNALISER LA LISTE DES DOCUMENTS RÉCENTS D’EXCEL (la vraie méthode)
Comment compter le nombre de cellules contenant un nombre de caractères sur Excel sans VBA ?

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2022 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.