Médiaforma

VBA Excel – Sauvegarde dans un fichier texte

Partagez cet article sur vos réseaux

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 :

 
Commentaires

Merci pour ce petit bout de code bien pratique. Il me permet d’automatiser la génération de code.

Laissez un commentaire