Bonjour,
Je suis nouveau sur ce site et j'aimerais quelques informations concernant la programmation en VBA (je suis débutant en VBA).
Je suis en train de mettre au point une macro qui transformerait mon tableau excel (Excel 2007) en un fichier csv et le placerait dans un dossier que je choisit.
1. La conversion
Durant cette étape, je souhaite que ma macro génère un nouveau fichier au format csv contenant les informations du tableau excel (mon fichier excel de base reste intacte : son extension reste du xls, et il garde l'ensemble de ses données).
2. La sauvegarde dans un fichier choisit
Une fois le fichier csv généré, je souhaiterais choisir le dossier de destination du fichier (pour ne pas le laisser dans le même répertoire que l'excel ou qu'il apparaisse dans le répertoire par défaut).
J'ai actuellement mis au point un code qui fait ce que je lui demande mais c'est de la bidouille :
- ma conversion en csv prend en compte le nombre de lignes et de colonnes de mon doc => une modification de mon excel engendre une modification de la macro;
- le fichier csv généré file directement dans le répertoire par défaut (Mes Documents) et je dois le déplacer vers le dossier que je souhaite.
J'aimerais donc un code qui lors de la création du fichier csv le place directement dans le répertoire de mon choix.
Voici mon code actuellement, j'ai séparé les deux étapes pour que ce soit plus clair :
Merci d'avance pour la lecture et les réponses à mon poste et si je n'ai pas été assez claire n'hésitez pas à me le dire j'expliquerai la chose avec plus de détails.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub Extraction() Dim Plage As Object, oL As Object, oC As Object, Tmp$, Sep$ Sep = ";" Set Plage = ActiveSheet.Range("A1:W1" & ActiveSheet.Range("A50").End(xlUp).Row) Open "Fichier.csv" For Output As #1 For Each oL In Plage.Rows Tmp = "" For Each oC In oL.Cells Tmp = Tmp & CStr(oC.Text) & Sep Next Print #1, Tmp Next Close Const Source = "C:\Users\Franc\Documents\Fichier.csv" Const Destin = "C:\Users\Franc\Desktop\Modèles\CSV\Fichier.csv" Dim objOFS As Variant Set objOFS = CreateObject("Scripting.FileSystemObject") If (objOFS.FileExists(Source)) Then objOFS.moveFile Source, Destin End If Set objOFS = Nothing End Sub
Partager