macro qui s'auto supprime : code ?

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
195
Réponses
5
Affichages
327
Réponses
4
Affichages
382
Retour