Pour stocker du texte dans un fichier texte, vous ouvrirez ce fichier avec la méthode Open, puis vous écrirez une ou plusieurs fois dedans avec la méthode Print. Lorsque la totalité du texte aura été écrite, vous fermerez le fichier avec la méthode Close.
La méthode Open peut ouvrir le fichier selon trois modes :
- Input : lecture seule.
- Output : écriture avec effacement du fichier à chaque ouverture.
- Append : écriture avec ajout après la dernière ligne du fichier.
Voici la syntaxe de l’instruction Open :
Open Fichier For Input|Output|Append As #f
Où :
- Fichier est le chemin complet du fichier à ouvrir.
- Input, Output et Append sont les trois modes d’ouverture du fichier.
- f est un numéro de fichier, compris entre 1 et 511.
Le numéro du fichier ne doit pas être pris par un autre programme. Pour obtenir le premier numéro disponible, vous utiliserez la méthode FreeFile :
Dim f As Integer f = FreeFile Open Fichier For Output As #f
Un premier exemple
Dans ce premier exemple, une ligne de texte est sauvegardée dans le fichier c:\data\fichiertexte.txt. Une gestion d’erreur est mise en place à l’aide de l’instruction On Error GoTo. Si la création du fichier est impossible (par exemple parce que le dossier destination n’existe pas), un message d’erreur sera affiché :
Sub Macro1() On Error GoTo Erreur Dim Chaine As String Dim Fichier As String Chaine = "Le texte à sauvegarder" Fichier = "c:\data\fichiertexte.txt" Dim f As Integer f = FreeFile Open Fichier For Output As #f Print #f, Chaine Close #f MsgBox "Le texte a été sauvegardé dans: " & Fichier Exit Sub Erreur: MsgBox "Le fichier de sortie est inaccessible" End Sub
Voici le message affiché lorsque l’écriture a eu lieu dans le fichier c:\data\fichiertexte.txt :
Si l’écriture est impossible, un message d’erreur s’affiche :
Copie de la plage A1:A5 dans un fichier texte
Vous allez aller un peu plus loin en copiant dans le fichier texte le contenu des cellules A1 à A5 de la feuille de calcul active. La copie se fera à raison d’une cellule par ligne. Nous allons partir de ces données :
Voici le code utilisé :
Sub Macro1() On Error GoTo Erreur Dim Chaine As String Dim Fichier As String Fichier = "c:\data\sauvegarde.txt" Dim f As Integer f = FreeFile Open Fichier For Output As #f For i = 1 To 5 Print #f, Cells(i, 1) Next Close #f MsgBox "Les cellules ont été sauvegardées dans " & Fichier Exit Sub Erreur: MsgBox "Le fichier de sortie est inaccessible" End Sub
Ici, une simple boucle For Next a été utilisée pour parcourir les cellules de la feuille active (Cells(i,1)) et les stocker dans le fichier texte (Print). Voici le fichier texte résultant :
Merci pour ce petit bout de code bien pratique. Il me permet d’automatiser la génération de code.