Macro de conversion EXCEL vers CSV et choix destination du fichier CSV
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.
:arf:
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 :
Code:
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 |
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.