Bonsoir Nonopince,
Je te propose le code suivant :
Sub SaveWithoutMacros()
'But : Pour créer une copie du classeur actif sans macros
'NOTER SVP : Vous devez aller dans Outils, Références et cocher
'Microsoft Visual Basic for Applications Extensibility library
Dim vFilename As Variant
Dim wbActiveBook As Workbook
Dim VBComp As VBIDE.VBComponent
Dim VBComps As VBIDE.VBComponents
On Error GoTo CodeError
'Message Box proposant un enregistrement sous
If MsgBox("Voulez-vous enregistrer sous ?" & vbCrLf & "Le fichier source sera fermé sans sauvegarde", vbOK) = vbOK Then
'Si oui, alors.....
'ouvre fenetre pour choisir chemin et nom pour la sauvegrade SANS LES MACRO
' en temps normal, les macro restent sur la copie
vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft Excel Workbooks,*.xlsx", _
Title:="Copie du classeur sans les macros")
If vFilename = False Then Exit Sub 'Utilisateur choisit d'annuler
'ActiveWorkbook.SaveCopyAs vFilename
'Set wbActiveBook = Workbooks.Open(vFilename)
'Set VBComps = wbActiveBook.VBProject.VBComponents
'For Each VBComp In VBComps
' Select Case VBComp.Type
' Case vbext_ct_StdModule, vbext_ct_MSForm, _
' vbext_ct_ClassModule
' VBComps.Remove VBComp
' Case Else
' With VBComp.CodeModule
' .DeleteLines 1, .CountOfLines
' End With
' End Select
'Next VBComp
'sauvegarde
'wbActiveBook.Save
'#############################################################
'GVS: Code proposé en remplacement de ce qui précède
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs vFilename, xlOpenXMLWorkbook
Application.DisplayAlerts = True
'#############################################################
Windows("enregistrez sous MAIS SANS LES MACROS.xlsm").Activate
ActiveWindow.Close SaveChanges:=False
Exit Sub
'sinon quitte la macro et ferme le fichier source
Else
Windows("enregistrez sous MAIS SANS LES MACROS.xlsm").Activate
ActiveWindow.Close SaveChanges:=False
Exit Sub
End If
CodeError:
Exit Sub
End Sub