Ecrire des données dans un fichier texte en utilisant Excel VBA
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:
Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivant:
-
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
-
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.
-
Nous initialisons l’objet plage RNG avec la plage sélectionnée.
Set rng = Selection
-
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.
-
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).
-
Excel VBA écrit la valeur d’une cellule à la CellValue variable.
cellValue = rng.Cells(i, j).Value
-
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).
-
Ne pas oublier de fermer les deux boucles.
Next j Next i
-
Fermez le fichier.
Close #1
-
Sélectionnez les données et cliquez sur le bouton de commande sur la feuille.
Résultat: