bonjour coco_lapin , bonjour Charly
j'espere que ces infos pourront t'aider
Supprimer une procedure Workbook_Open par macro
*********************************************
A chaque ouverture du classeur contenant la macro , une copie du document est créée , expurgée de la procédure Workbook_Open
Private Sub Workbook_Open()
Dim Debut As Integer, Lignes As Integer
'enregistrement du nouveau classeur
Thisworkbook.Saveas Filename:='C:\\excel\\enregistrement ' & Format(Time, 'hh mm ss') & '.xls'
'suppression de la procedure Workbook_Open
With Thisworkbook.VBProject.VBComponents('Thisworkbook').codemodule
Debut = .Procstartline('Workbook_Open', 0)
Lignes = .Proccountlines('Workbook_Open', 0)
.Deletelines Debut, Lignes
End With
'sauvegarde modification
Thisworkbook.Save
End Sub
Supprimer la macro nommée 'MaMacro' dans le 'module3'
**************************************
Sub supprimerUneMacroPrecise()
Dim Debut As Integer, Lignes As Integer
With ThisWorkbook.VBProject.VBComponents('Module3').CodeModule
Debut = .ProcStartLine('MaMacro', 0)
Lignes = .ProcCountLines('MaMacro', 0)
.DeleteLines Debut, Lignes
End With
End Sub
Supprimer un module
******************
Sub supprimerUnModule()
With ThisWorkbook.VBProject.VBComponents
.Remove .Item('Module2')
End With
End Sub
Supprimer un UserForm par macro
*******************************
Sub suppressionUSF()
'necessite d'activer la reference Microsoft Visual Basic for Applications Extensibility 5.3
Dim VBComp As VBComponent
Set VBComp = ThisWorkbook.VBProject.VBComponents('UserForm1')
ThisWorkbook.VBProject.VBComponents.Remove VBComp
End Sub
Supprimer la totalité des procédures du classeur
*******************************************
Sub SupprimeToutVBA()
'copie le classeur en supprimant la totalité des procedures
Dim VbComp As VBComponent
ThisWorkbook.SaveAs 'C:\\test.xls'
For Each VbComp In ActiveWorkbook.VBProject.VBComponents
Select Case VbComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
ActiveWorkbook.Save
End Sub
Supprimer les modules vides dans le classeur actif
********************************************
Sub supprimerTousModulesVides()
Dim vbComp As Object
Dim i As Long, j As Long
For Each vbComp In ActiveWorkbook.VBProject.VBComponents
If vbComp.Type = 1 Then
i = vbComp.CodeModule.CountOfDeclarationLines + 1
j = vbComp.CodeModule.CountOfLines
If j < i Then ActiveWorkbook.VBProject.VBComponents.Remove vbComp
End If
Next
End Sub
bonne journée
MichelXld