petit code trouver sur excelabo
' Lolo, Patrick Penet (N°1119)
Sub EffaceCodeFeuille(NomFeuille As String)
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets _
(NomFeuille).CodeName).CodeModule
.DeleteLines 1,
.CountOfLines
.CodePane.Window.Close
end with
End Sub
Sub
EffaceCodeThisWbk()
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End Sub
Sub EffaceUserForm(MonUserForm As String)
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents(MonUserForm)
End Sub
Sub SuppModule(nModule As String)
Dim VBC As VBComponent
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = nModule Then .VBComponents.Remove VBC
Next VBC
End With
End Sub
IMPORTANT : tu dois charger la bibliothèque
Microsoft Visual Basic for Applications Extensibility 5.3
Lolo, Patrick Penet (N°1119)
-----------------------------
ou
------------------------------
sur le site de frederic sigonneau http://perso.wanadoo.fr/frederic.sigonneau/
pleins d'exemples qui pourront t'aider
Attribute VB_Name = "DetruireToutCodeSaufMoi"
'détruire tout le code d'un classeur, sauf la procédure
'qui procède à cette destruction
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, LiDeb, LiFin, Tmp$
AGarder = "ToutDetruireSaufMoi"
MonModule = "Module1" 'ou autre
'récupérer le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
LiDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(LiDeb, LiFin)
End With
Dim VbComp, LesComps
'détruire tout le code de ce classeur
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VbComp In LesComps
Select Case VbComp.Type
Case 1, 2, 3
If VbComp.Name = MonModule Then
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
'mais conserver cette macro
.AddFromString Tmp
End With
Else: LesComps.Remove VbComp
End If
Case 100
VbComp.CodeModule.DeleteLines 1, VbComp.CodeModule.CountOfLines
End Select
Next
End Sub 'fs