Bonjour à tous,
J'ai réalisé une macro qui réalise des copies du fichier principal. Lorsqu'on ouvre le fichier, une copie "backup" avec la date du jour est enregistrée dans un sous-dossier "Backups". Si on ouvre une deuxième fois le fichier dans la journée, le programme détecte que le backup existe déjà, et la copie n'est pas faite.
La macro fonctionne parfaitement lorsque je la lance toute seule, mais lorsqu'elle est lancée dans Workbook_Open, elle échoue à l'instruction suivante :
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
25
26
27
28
29
30
31
32
33
34
35
36 ' ------------------------------------------------------------------------------------- ' Sub which does a backup of the file every day if the file is opened. ' ------------------------------------------------------------------------------------- Sub BackupFile() Dim sPath As String Dim sName As String Dim sBackup As String With ThisWorkbook sPath = .Path sName = .name End With sBackup = sPath & "\Backups\Backup_" & Left(Date, 2) _ & "_" & Mid(Date, 4, 2) & "_" & Right(Date, 4) & ".xlsm" If Dir(sBackup) = "" Then Application.DisplayAlerts = False ' Enregistrer sous le backup. ThisWorkbook.SaveAs _ Filename:=sBackup, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, _ CreateBackup:=False ' Enregistrer sous avec le fichier d'origine, pour travailler ' sur le fichier ensuite et non sur le backup. ThisWorkbook.SaveAs _ Filename:=sPath & "\" & sName, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, _ CreateBackup:=False Application.DisplayAlerts = True End If End Sub
avec le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ThisWorkbook.SaveAs _ Filename:=sPath & "\" & sName, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, _ CreateBackup:=False Application.DisplayAlerts = True
Erreur d'éxecution '1004' Impossible d'accéder à 'xxxx.xlsm'
Auriez-vous une idée ? Je ne vois pas la différence entre lancer la procédure à Workbook_Open, et la lancer à la main...
Merci pour votre aide
Partager