وعليكم السلام ورحمة الله تعالى وبركاته
يمكنك تعديل هدا بما يناسبك
Option Explicit
Sub Sauvegarde_WB()
Dim WS As Worksheet, CrWS As Workbook, newWs As Worksheet, f As Worksheet
Dim chemin$, sNom$, dossier$, sPath$, n As Boolean
On Error GoTo EndClear
SetApp False
Set CrWS = Workbooks.Add(xlWBATWorksheet)
Set f = CrWS.Sheets(1): f.Name = "Temp"
n = True
For Each WS In ThisWorkbook.Worksheets
WS.Copy After:=CrWS.Sheets(CrWS.Sheets.Count)
Set newWs = CrWS.Sheets(CrWS.Sheets.Count)
newWs.UsedRange.Value = newWs.UsedRange.Value
On Error Resume Next: newWs.Buttons(1).Delete: On Error GoTo 0
newWs.Name = Left(WS.Name, 31)
If n Then: f.Delete: n = False
Next WS
dossier = ThisWorkbook.Path & "\Workbook_Copy"
If Dir(dossier, vbDirectory) = "" Then MkDir dossier
sPath = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
sNom = sPath & "_" & Format(Now, "dd-mm-yyyy") & ".xlsx"
chemin = dossier & "\" & sNom
CrWS.SaveAs Filename:=chemin, FileFormat:=xlOpenXMLWorkbook
CrWS.Close False
SetApp True
Exit Sub
EndClear:
SetApp True
End Sub
Private Sub SetApp(ByVal enable As Boolean)
With Application
.ScreenUpdating = enable: .EnableEvents = enable: .DisplayAlerts = enable
.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
TEST.xlsb