'### A adapter (suffixe de la copie du classeur) ###
Const EXTENSION As String = "_Clean.xls"
'###################################################
Sub KillMacroFormuleNomSautPage()
Dim MonFichier
Dim var
Dim WB As Workbook
Dim S As Worksheet
Dim N As Name
Dim R As Range
Dim VBC As Object
Dim i&
Dim j&
Dim A$
Dim ErreurVBide As Boolean
MonFichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
If MonFichier = False Then Exit Sub
FileCopy MonFichier, MonFichier & EXTENSION
Set WB = Workbooks.Open(MonFichier & EXTENSION)
On Error GoTo Erreur
'/// VBE ///
ErreurVBide = True
For i& = WB.VBProject.VBComponents.Count To 1 Step -1
Set VBC = WB.VBProject.VBComponents(i&)
If VBC.Type <> 100 Then
'--- Supprime les modules (standard, classe) ---
WB.VBProject.VBComponents.Remove VBC
Else
'--- Supprime le code associé à chaque feuille ---
VBC.CodeModule.DeleteLines 1, VBC.CodeModule.CountOfLines
End If
Next i&
'/// EXCEL ///
ErreurVBide = False
'--- Suppression des noms ---
For Each N In WB.Names
N.Delete
Next
For Each S In WB.Sheets
'--- Suppression des sauts de pages manuels ---
For j& = S.HPageBreaks.Count - 1 To 1 Step -1
S.HPageBreaks(j&).Delete
Next j&
'--- Suppression des formules ---
Set R = S.UsedRange
var = R
R = var
Next S
Exit Sub
Erreur:
A$ = "Erreur " & Err.Number & vbCrLf & Err.Description
If ErreurVBide And Err = 1004 Then
WB.Close savechanges:=False
Set WB = Nothing
Kill MonFichier & EXTENSION
A$ = A$ & vbCrLf & vbCrLf
A$ = A$ & "Le fichier " & MonFichier & " ne peut être traité. Ouvrez le et :"
A$ = A$ & vbCrLf & vbCrLf
A$ = A$ & "1) Affichez la barre d'outils ''Visual Basic'' " & _
"(clic droit dans la barre de menus/Sélectionner ''Visual Basic'')" & vbCrLf & _
"2) Faites Sécurité.../Editeurs approuvés et cochez ''Faire confiance au projet Visual Basic''"
End If
MsgBox A$
End Sub