macro qui s'auto supprime : code ?

  • Initiateur de la discussion stéph
  • Date de début
S

stéph

Guest
Qui connait le code VBA pour supprimer une autre macro et même pour qu'une macro s'auto supprime ?
Merci.
 
M

m.lecxe

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 046
Membres
104 010
dernier inscrit
Freba