VBA – Écrire dans un Fichier Texte

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on mai 5, 2023

Ce tutoriel montre comment écrire dans des fichiers texte à l’aide de VBA.

Écrire dans un Fichier Texte

Les codes ci-dessous utilisent l’objet FileSystemObject (en savoir plus). Pour l’utiliser, vous devez définir une référence à la bibliothèque d’exécution des scripts VB.

Écriture dans un Nouveau Fichier Texte

Avec la fonction CreateTextFile de FileSystemObject, vous pouvez créer et ajouter du contenu à un fichier texte :

Sub FSOCreerEtEcrireFichierTexte() 
     Dim FSO As New FileSystemObject
     Set FSO = CreateObject("Scripting.FileSystemObject")
     Set NouveauFichier = FSO.CreateTextFile("C:\FichierTest.txt")

     NouveauFichier.Write "ligne test"
     NouveauFichier.Close

End Sub

Veuillez noter que le contenu ne sera pas entouré de guillemets.

Écrire dans un Fichier Texte Existant

Pour écrire dans un fichier texte existant, vous pouvez utiliser la commande OpenTextFile de FileSystemObject en mode ForWriting.

Sub FSOEcrireFichierTexte() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Fichier = FSO.OpenTextFile("C:\FichierTest.txt", ForWriting)

    Fichier.Write "Ligne Test"
    Fichier.Close

End Sub

Veuillez noter que vous n’avez pas nécessairement besoin de FileSystemObject pour écrire dans un fichier texte existant. L’exemple ci-dessus est illustré d’une autre manière dans le code ci-dessous (voir l’autre exemple dans la section Plage de données vers un fichier texte) :

Sub EcrireFichierTexte()
    Dim NomFichier As String
    NomFichier = "C:\FichierTest.txt"

    Open FileName For Output As #1
    Print #1, "Ligne Test"
    Close #1

End Sub

Veuillez noter qu’en utilisant la commande Write au lieu de Print, le contenu ajouté sera placé entre guillemets. En ayant les deux commandes suivantes dans votre macro

Write #1, "Ligne Test #1"
Print #1, "Ligne Test #2"

vous obtiendrez un fichier texte comme celui-ci :

exemple ecriture fichier texte ligne test resultat

Ajouter au Fichier Texte

En remplaçant le mode du code ci-dessus par ForAppending, il est possible d’ajouter une ligne à la fin du fichier texte :

Set FichierEcriture = FSO.OpenTextFile("C:\FichierTest.txt", ForAppending)

Méthode WriteLine

Cette méthode ajoute la chaîne de caractères saisie au contenu existant sous la forme d’une ligne distincte.

Méthode Write

La chaîne de caractères saisie est ajoutée sur la même ligne que le contenu existant.

Méthode WriteBlankLines

Cette méthode prend en paramètre le nombre de lignes vierges à écrire dans le fichier texte.

Le code ci-dessous illustre la différence entre les différentes méthodes d’écriture :

Sub MethodesEcriture()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FichierEcriture = FSO.OpenTextFile("C:TestTestFile.txt", ForAppending)

    FichierEcriture.Write "Ligne Test #1 "
    FichierEcriture.Write "Ligne Test #2"
    FichierEcriture.WriteBlankLines (3)
    FichierEcriture.WriteLine "Ligne Test #3"
    FichierEcriture.WriteLine "Ligne Test #4"
    FichierEcriture.Close

End Sub

Et le résultat :exemple ecriture fichier texte ligne test methodes

Transfert d’une Plage de Données Vers un Fichier Texte

Si vous souhaitez transférer une plage de données de votre feuille de calcul vers un fichier texte, vous pouvez utiliser ce code :

Sub ExporterVersFichierTexte()
     Dim NomFichier As String, LigneTexte As String
     Dim MaPlage As Range, i, j

     NomFichier = "C:\FichierTest.txt" ' vous pouvez spécifier ici le nom du fichier à créer

     Open NomFichier For Output As #1

     Set MaPlage = Range("data") ' on suppose que la feuille de calcul contient une plage nommée "data"
     For i = 1 To MaPlage.Rows.Count
         For j = 1 To MaPlage.Columns.Count
             LigneTexte = IIf(j = 1, "", LigneTexte & ",") & MaPlage.Cells(i, j) 'le fichier texte utilisera des virgule comme séparateur
         Next j
         Print #1, LigneTexte ' utiliser la commande Write au lieu de Print exportera les données entourées de guillemets
     Next i

     Close #1

End Sub

Exporter un Tableau vers Fichier Texte

Vous pouvez également enregistrer votre tableau de données dans un fichier texte comme suit :

Sub ExporterTableauFichierTexte()
    Dim MonTableau As Variant
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")

    MonTableau = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))

    Set FichierACreer = FSO.CreateTextFile("C:\FichierTest.txt")

    For n = 0 To UBound(MonTableau)
        FichierACreer.WriteLine MonTableau(n)(0) & "," & MonTableau(n)(1)
    Next
    
    FichierACreer.Close

End Sub
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA