Bonjour à tous,

J'aimerais créer une macro excel simple qui enregistre une copie de mon fichier excel au format CSV lorsque j'enregistre le fichier excel (.xlsm) avec un CTRL+S par exemple.

J'ai réalisé une première macro comme suit :

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
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim chemin_export As String
    Dim nom_csv As String
    Dim chemin_complet As String
 
 
    chemin_export = "C:\...\dossier"
    nom_feuille = ThisWorkbook.Sheets(1).Name
    chemin_complet = chemin_export & "\" & nom_feuille & ".csv"
 
    'MsgBox Dir(chemin_complet)
 
    'If Dir(chemin_complet) <> "" Then Kill (chemin_complet) Else End
 
    ActiveWorkbook.SaveAs Filename:=chemin_complet, FileFormat:=xlCSV, CreateBackup:=False, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
 
    MsgBox chemin_complet & " sauvegardé en tant que CSV."
 
 
End Sub
Toutefois quand j'exécute ce script via un CTRL+S, le message s'affiche bien, toutefois il recommence "en boucle" jusqu'à ce qu'il crash. Le CSV est néanmoins créée.

Lorsque je décommente les 2 lignes avec la fonction Dir(), le message avec le Dir() s'affiche bien mais le CSV n'est plus créée.

Par ailleurs, j'ai placé le code dans "VBAProject/Microsoft Excel Objects/ThisWorkbook".

Comment régler le problème svp ? Auriez-vous une macro tout aussi "simple" permettant de faire cette copie en CSV ?

Merci d'avance.

Bonne journée,

Olscream