XL 2010 Sauvegarde dans un autre répertoire à la fermeture du fichier

Deliau

XLDnaute Nouveau
Bonjour,

Je souhaite qu'à la fermeture d'un fichier, une copie se créé dans un autre répertoire.

Dans VBA, j'ai donc mis ce code dans mon fichier :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

ThisWorkbook.SaveCopyAs Filename:="D:\Users\perso\Desktop\sauv\" & ThisWorkbook.Name

End Sub

Mais le fichier créé dispose aussi de ce code, et génère une erreur quand je le ferme
icon_eek.gif


Donc pour résumer :
- A la fermeture du fichier A, je souhaite qu'une copie (fichier B) se créé dans un autre répertoire
- Que le fichier B ne dispose pas de macro (un simple .xls)
- Que le fichier B soit en lecture seule

Merci de votre aide
 

job75

XLDnaute Barbatruc
Bonjour Deliau, bienvenue sur XLD,

Ce n'est pas en .xls qu'il faut enregistrer le fichier mais en .xlsx pour qu'il n'y ait pas de macro.

Et utiliser SaveAs au lieu de SaveCopyAs :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Me.SaveAs "D:\Users\perso\Desktop\sauv\" & Left(Me.Name, Len(Me.Name) - 5), 51 '51 => fichier .xlsx
End Sub
A+
 

job75

XLDnaute Barbatruc
Compte tenu de l'instruction Application.DisplayAlerts = False il n'y a pas de message s'il y a eu des modifications.

Pour que les 2 fichiers .xlsm et .xlsx soient bien identiques il faut enregistrer les modifications éventuelles :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If Not Me.Saved Then Me.Save 'enregistre les modifications
Me.SaveAs "D:\Users\perso\Desktop\sauv\" & Left(Me.Name, Len(Me.Name) - 5), 51 '51 => fichier .xlsx
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50