Hello tout le monde,
Je souhaite exporter les N sheets d'un fichier excel
- au format csv (j'ai utilisé FileFormat:=xlCSV)
- avec un séparateur ";" (j'ai utilisé local:=True)
- (dans l'idéal mais pas mandatory) avec des doubles quotes englobant les champs (pas trouvé de solution)
- 1 csv par sheet (j'ai bouclé : For Each ws In ActiveWorkbook.Worksheets)
- les sheets soient générées dans le même répertoire que l'excel de base (j'ai setté file_path = ActiveWorkbook.Path & "\" avant de boucler sur les sheets)
- Que les fichiers soient encodés en UTF8 (pas trouvé de solution pour le forcer)
- Que le tout soit fait via le clic d'un bouton placé sur la première sheet, ou encore mieux sur un sheet qui servirait de page d'accueil. (Pas trouvé comment je pourrais exclure la sheet1, qui serait la page d'accueil, de la génération)
- Compatible excel 2013 et +
L'un de vous aurait-il un code VB sous la main ou pourrait m'aider à compléter le mien?
J'ai fait ceci , mais ça bug un peu à la génération de la feuil2. lorsque le fichier est généré il a le contenu de la feuil1. Et lorsque je ferme le fichier xlsm, il demande de re sauver le fichier feuil2.csv...
Des idées d'amélioration?
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 Sub saveSheetToCSV() Dim ws As Worksheet Dim file_path As String Application.ScreenUpdating = False Application.DisplayAlerts = False file_path = ActiveWorkbook.Path & "\" For Each ws In ActiveWorkbook.Worksheets ws.Copy MsgBox "PATH =" & ThisWorkbook.Path MsgBox "Filename =" & file_path & ActiveSheet.Name & ".csv" ws.SaveAs Filename:=file_path & ActiveSheet.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True ActiveWorkbook.Close Next End Sub
Merci d'avance pour l'aide!
Partager