• Initiateur de la discussion Initiateur de la discussion supertriple
  • 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

supertriple

Guest
Bonjour,

Avez-vous une macro qui arrête les macro existantes sur un classeur à une date précise ??

merci
 
Re : Macro anti macro

Bonjour.

Ce code de Bill Manville communiqué par Frédéric Sigonneau à adapter, peut-être (non testé).

VB:
'supprimer *tout* le code d'un classeur

'copier ce code dans un module standard d'un autre classeur que celui
'dont vous voulez supprimer toutes les macros et l'exécuter après avoir
'rendu actif le classeur dont les macros doivent être supprimées
'Bill Manville, mpep
Sub RemoveMacros()
  Dim O As Object
  For Each O In ActiveWorkbook.Sheets
    If TypeName(O) = "Worksheet" Then
      Select Case O.Type
        Case xlExcel4MacroSheet, xlExcel4IntlMacroSheet
          Application.DisplayAlerts = False
          MsgBox "Macro sheet " & O.Name
          O.Delete
          Application.DisplayAlerts = True
      End Select
    ElseIf TypeName(O) = "Module" Then
        Application.DisplayAlerts = False
        MsgBox "Module " & O.Name
        O.Delete
        Application.DisplayAlerts = True
    End If
  Next
  If Val(Application.Version) >= 8 Then
    With ActiveWorkbook.VBProject
      For Each O In .VBComponents
        Select Case O.Type
          Case 1, 2 ' standard or class module
            MsgBox "Module " & O.Name
            .VBComponents.Remove O
          Case Else ' form or document
            With O.CodeModule
              If .CountOfLines > 0 Then
                MsgBox "Module behind " & O.Name
                .DeleteLines 1, .CountOfLines
              End If
            End With
        End Select
      Next
    End With
  End If
  For Each O In ActiveWorkbook.Names 'noms dans le classeur
    Select Case O.MacroType
      Case xlFunction, xlCommand
        MsgBox "Name " & O.Name
        O.Delete
    End Select
  Next
End Sub
 
Re : Macro anti macro

Re,

Merci
y'a pas de risques de tout perdre ??
c'est juste pour une interuption temporaire
Si...
Comme indiqué en commentaire, cette macro efface tout le code du classeur.
Si, comme conseillé dans Lien supprimé, vous aviez joint votre fichier (en remplaçant les éventuelles données confidentielles) d'autres solutions auraient pu être envisagées avec un test de la date lors de l'exécution du code.
 
Re : Macro anti macro

Re,

Essayez cette modification :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim TabTemp As Variant
Dim L As Long
Dim V As Variant
If Date = 40928 Then Exit Sub
'Ne gère pas les sélections de plages
...
40928 correspond au n° de série de la date du 20/1/2012 à adapter avec la date ou la période que vous désirez.
 
- 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
7
Affichages
357
Réponses
1
Affichages
162
Réponses
9
Affichages
331
Réponses
2
Affichages
240
Réponses
4
Affichages
481
Réponses
4
Affichages
166
Retour