VBA – Écrire dans un Fichier Texte
In this Article
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 :
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 :
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