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 remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - 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.