Nous examinerons un programme dans Excel VBA qui écrit une plage Excel dans un fichier texte CSV (valeurs séparées par des virgules).
Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivantes:
1. Tout d’abord, nous déclarons une variable appelée Ecrire de type String, un objet appelé rng de type Range, une variable appelée cellValue de type Variant, une variable appelée i de type Integer et une variable appelée j de type Integer. Nous utilisons ici une variable Variant car une variable Variant peut contenir n’importe quel type de valeur.
Dim Ecrire As String, rng As Range, cellValue As Variant, i As Integer, j AsInteger
2. Nous devons spécifier le chemin complet et le nom de fichier du fichier.
Ecrire= Application.DefaultFilePath & "\sales.csv"
Remarque: la propriété DefaultFilePath renvoie le chemin du fichier par défaut. Chemin d’accès au dossier que vous voyez lorsque vous ouvrez ou enregistrez un fichier.
3. Nous initialisons l’objet de plage rng avec la plage sélectionnée.
Set rng = Selection
4. Ajoutez la ligne de code suivante:
Open Ecrire For Output As #1
Remarque: cette instruction permet d’écrire dans le fichier. Nous pouvons nous référer au fichier comme # 1 pendant le reste de notre code. Si le fichier existe déjà, il sera supprimé et un nouveau fichier du même nom sera créé.
5. Démarrez une boucle double.
For i = 1 To rng.Rows.Count For j = 1 To rng.Columns.Count
Remarque: rng.Rows.Count renvoie le nombre de lignes (17 dans cet exemple) et rng.Columns.Count renvoie le nombre de colonnes (4 dans cet exemple).
6. Excel VBA écrit la valeur d’une cellule dans la variable cellValue.
cellValue = rng.Cells(i, j).Value
7. Ajoutez les lignes de code suivantes pour écrire la valeur de cellValue dans le 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 démarre uniquement une nouvelle ligne (Write # 1, cellValue) lorsque j est égal au nombre de colonnes (dernière valeur d’une ligne). Pour séparer les valeurs par une virgule, utilisez Write # 1, cellValue, (avec une virgule).
8. N’oubliez pas de fermer les deux boucles.
Next j Next i
9. Fermez le fichier.
Close # 1
10. Sélectionnez les données et cliquez sur le bouton de commande sur la feuille.
Résultat: