Ci-dessous, nous examinerons un programme dans Excel VBA qui écrit une gamme Excel dans un fichier texte CSV (séparés par des virgules valeur).

Situation:

Write Data to Text File in Excel VBA

Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivant:

  1. Tout d’abord, nous déclarons une variable appelée myFile de type String, un objet appelé RNG Haut de gamme, une variable appelée CellValue de type Variant, une variable i appelé de type entier, et une variable appelée j de type entier. Nous utilisons une variable Variant ici car une variable Variant peut contenir tout type de valeur.

Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
  1. Nous avons besoin de spécifier le chemin complet et le nom du fichier.

myFile = Application.DefaultFilePath & "\sales.csv"

Note: la propriété DefaultFilePath renvoie le chemin de fichier par défaut. Pour changer l’emplacement du fichier par défaut, sur l’onglet Fichier, cliquez sur Options, Enregistrer.

  1. Nous initialisons l’objet plage RNG avec la plage sélectionnée.

Set rng = Selection
  1. Ajoutez la ligne de code suivant:

Open myFile For Output As #1

Remarque: cette déclaration permet le fichier à écrire. On peut se référer au fichier en tant que n ° 1 pendant le reste de notre code. Si le fichier existe déjà, il sera supprimé et sera créé un nouveau fichier avec le même nom.

  1. Démarrez une double boucle.

For i = 1 To rng.Rows.Count

For j = 1 To rng.Columns.Count

Note: rng.Rows.Count retourne le nombre de lignes (17 dans cet exemple) et rng.Columns.Count renvoie le nombre de colonnes (4 dans cet exemple).

  1. Excel VBA écrit la valeur d’une cellule à la CellValue variable.

cellValue = rng.Cells(i, j).Value
  1. Ajoutez les lignes de code suivant pour écrire la valeur de CellValue au fichier texte.

If j = rng.Columns.Count Then

Write #1, cellValue

Else

Write #1, cellValue,

End If

Explication: en raison de l’instruction if Then Else, Excel VBA ne démarre une nouvelle ligne (Write # 1, CellValue) lorsque j est égal au nombre de colonnes (dernière valeur dans une ligne). Pour séparer les valeurs par une virgule, utilisez write # 1, CellValue, (par une virgule).

  1. Ne pas oublier de fermer les deux boucles.

Next j

Next i
  1. Fermez le fichier.

Close #1
  1. Sélectionnez les données et cliquez sur le bouton de commande sur la feuille.

Résultat:

Write Data to Text File Result