Re : Suppression de macro à la fin d'un fichier
Bonjour,
Il y a cette solution !!
Sub Workbook_Open()
Call Superior
End Sub
Sub Superior()
Message = InputBox("Quelle est votre Puissance supérieure:", "Puissance supérieure")
Range("H63") = Message
Call DelMacro
Application.Dialogs(xlDialogSaveAs).Show
End Sub
'Option Explicit
' la Macro à supprimer est nommée Workbook_Open, Superior et DelMacro dans module ThisWorkbook
' Cocher Outils | Références Microsoft Visual Basic for Applications
'Extensibility 5.3
'Cette macro supprime tout le code vba (parce que demandé) qui se trouve dans le module "ThisWorkbook", mais possibilité de supprimer module par module
)
Sub DelMacro()
Dim Debut As Long
Dim NbLignes As Long
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
Debut = .ProcStartLine("Workbook_Open", 0)
NbLignes = .ProcCountLines("Workbook_Open", 0)
.deleteLines Debut, NbLignes 'supprime ce qui se trouve dans Workbook_Open
End With
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
Debut = .ProcStartLine("Superior", 0)
NbLignes = .ProcCountLines("Superior", 0)
.deleteLines Debut, NbLignes 'supprime ce qui se trouve dans le module Superior
End With
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
Debut = .ProcStartLine("DelMacro", 0)
NbLignes = .ProcCountLines("DelMacro", 0)
.deleteLines Debut, NbLignes 'supprime ce qui se trouve dans le module DelMacro
End With
End Sub
----------------------------------------------------------
Ou celle-ci si on veut vraiment supprimer TOUT le code qui se trouve dans ThisWorkbook
Sub DelMacro()
On Error Resume Next
Dim Debut As Long
Dim NbLignes As Long
Debut = 1
NbLignes = ActiveWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule.CountOfLines 'compte le nbr de lignes total de ThisWorkbook
Application.DisplayAlerts = False
ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.deleteLines Debut, NbLignes 'suppression totale de TOUT le code
End Sub
Bonne journée.
John