Macro pour convertir mon fichier Xls en Csv
Bonjour a tous,
J'ai un fichier .xls (qui s'appelle "FTT") dans le lequel je souhaite transformer (convertir) ses donnees en .csv sans perdre et renommer ce fichier .xls d'orgine de base.
La conversation sera journaliere et le fichier final s'appellera "Final Report"
Je viens imputer des donnees (copier coller) de colonne A a N a partir de la ligne 2.
J'ai des donnees de colonne A a N et le bouton de conversation sera en colonne P par exemple
Je souhaite une macro:
- Lors de la conversiion du fichier en CSV que ce soit en point virgule.
- Lors de la conversiion du fichier em CSV je ne souhaite pas avoir les 3 virgules a la fin de la 1ere ligne
- De garder mon fichier excel d'origine de base
- D'enregistrer le fichier final .csv dans le folder F:\XXX\INVOICES\FTT
- D'enregistrer le fichier avec la date d'aujourdhui en auto
Pouvez-vous m'aider s'il vous plait ?
Voici le code aue j'ai deja developpe
Sub test()
ActiveWorkbook.SaveAs FileName:= _
" F:\XXX\Global report CSV \Final report.csv", FileFormat:=xlCSV, _
CreateBackup:=False
End sub
J'espere que j'ai ete assez claire. N'hesitez a me poser des questions si ce n'est pas le cas.
Merci pour tout.
Nadine
Bonsoir,
A quelques détails près, c'est la demande qu'a faite "hichem" dans ce post (https://forum.excel-pratique.com/excel/enregistrer-un-fichier-en-csv-t93096.html) donc, je te poste le code adapté à ta demande, testes et dis-moi si ça convient :
Sub Test()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Tbl() As String
Dim Ligne As String
Dim Dossier As String
Dim Chemin As String
Dim Fichier As String
Dim I As Long
Dim J As Long
Dossier = "C:\mon dossier\" '<--- chemin à adapter !
'nom du fichier avec la date du jour
Fichier = "Final Report" & Format(Now, "dd-mm-yyyy") & ".csv"
'full path
Chemin = Dossier & Fichier
'si clic sur "Non", fin de procédure !
If MsgBox("Voulez-vous créer le fichier '" & Fichier & "' qui sera stocké dans le dossier '" & Dossier & "'?", vbQuestion + vbYesNo, "Fichier .CSV") = vbNo Then Exit Sub
'adapter le nom de la feuille
Set Fe = Worksheets("Feuil1")
'défini la plage sur toute la feuille
Set Plage = DefPlage(Fe, 1, 1)
'crée les lignes pour les enregistrements tabulés avec comme séparateur le point-virgule
For I = 1 To Plage.Rows.Count
For J = 1 To Plage.Columns.Count: Ligne = Ligne & Plage(I, J).Value & ";": Next J
'supprime le ; de fin
Ligne = Left(Ligne, Len(Ligne) - 1)
'stocke dans un tableau
ReDim Preserve Tbl(1 To I)
Tbl(I) = Ligne
'pour la suivante
Ligne = ""
Next I
'création du fichier .csv
Open Chemin For Output As #1
For I = 1 To UBound(Tbl): Print #1, Tbl(I): Next I
Close #1
'vérifie que le fichier est bien sur le disque sinon, message d'erreur
If Dir(Chemin) <> "" Then
'message de confirmation
MsgBox "Le fichier '" & Fichier & "' a bien été créé et enregistré dans le dossier '" & Dossier & "' !", vbInformation
Else
MsgBox "Une erreur c'est produite durant la création du fichier .csv !", vbExclamation
End If
End Sub
Function DefPlage(Fe As Worksheet, L As Long, C As Long) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function