Dim baseName As String, p As String
Dim choix As Variant, fmt As XlFileFormat
baseName = wbDest.Name
If InStrRev(baseName, ".") > 0 Then baseName = Left$(baseName, InStrRev(baseName, ".") - 1)
p = wbDest.Path & "\" & baseName & "_MAJ_" & Format(Date, "yyyy_mm_dd")
choix = Application.GetSaveAsFilename( _
InitialFileName:=p & ".xlsm", _
FileFilter:="Classeur Excel avec macros (*.xlsm), *.xlsm,Classeur Excel (*.xlsx), *.xlsx,Classeur Excel 97-2003 (*.xls), *.xls", _
Title:="Enregistrer le fichier CIBLE sous..." _
)
If choix <> False Then
Dim f As String: f = LCase$(CStr(choix))
If Right$(f, 5) = ".xlsm" Then
fmt = xlOpenXMLWorkbookMacroEnabled
ElseIf Right$(f, 5) = ".xlsx" Then
fmt = xlOpenXMLWorkbook
ElseIf Right$(f, 4) = ".xls" Then
fmt = xlExcel8
Else
' Par défaut, force .xlsm si aucune extension reconnue
f = f & ".xlsm": fmt = xlOpenXMLWorkbookMacroEnabled
End If
Application.DisplayAlerts = False
wbDest.SaveAs Filename:=f, FileFormat:=fmt
Application.DisplayAlerts = True
MsgBox "Fichier enregistré sous :" & vbCrLf & f, vbInformation
Else
MsgBox "Enregistrement annulé : le classeur cible reste ouvert sans sauvegarde.", vbExclamation
End If