Bonjour Jean Claude, Sonic, le forum
Je te propose le code suivant utilisant un getsaveasfilename prépositionné sur un chemin et un nom de fichier prédéfini. Ce code teste l'existence du fichier sur disque pour éviter l'écrasement accidentel et supporte l'annulation.
Cordialement, A+
Sub Enregistrement()
Dim Titre As String, Nom_Fichier As String, Chemin As String
Dim Demande As Integer
Dim Mem_Cla As Workbook
Set Mem_Cla = ActiveWorkbook 'définition du classeur à sauvegarder
Chemin = "d:\donnees\" 'définition du chemin
Nom_Fichier = Chemin & "Nom_par_Defaut.xls" 'définition du nom par défaut
Titre = "Enregistrement du fichier"
Do
Demande = 0
Nom_Fichier = Application.GetSaveAsFilename(Nom_Fichier, FileFilter:="Fichiers Excel (*.Xls),*.Xls", Title:=Titre)
If Not (Dir$(Nom_Fichier, vbNormal) = "") Then Demande = MsgBox(LCase(Nom_Fichier) & " existe déja" & Chr(10) & "en date du " & DateValue(FileDateTime(Nom_Fichier)) & Chr(10) & "voulez vous l'écraser ?", vbYesNo)
If Demande = 7 Then Titre = "Redéfinissez le nom d'enregistrement"
If Nom_Fichier = "Faux" Then MsgBox "Fichier non enregistré !", vbInformation: Exit Sub 'désactiver cette ligne et activer la suivante pour empécher l'annulation d'enregistrement
'If Nom_Fichier = "Faux" Then Demande = 7
Loop While Demande = 7
Mem_Cla.SaveAs Filename:=Nom_Fichier, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub