Supprimer toutes les Macros!!

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

Gexk5

XLDnaute Occasionnel
Bonsoir le forum
Est il possible de supprimer tous les boutons ainsi que toutes les macros d'un fichier, en effet, en fin d'année je remet à zéro un fichier et le sauvegarde sous un autre nom en automatique, je voudrais garder que mes liens hypertextes entre mes feuilles mais supprimer en auto toutes les macros et tous les boutons associés.
Merci d'avance
@
 
Re : Supprimer toutes les Macros!!

Soir Bon, pour ce qui concerne les macros, à adapter
Code:
Option Explicit

'   Macro nommée MacroADetruire dans module ModuleA
'   Cocher Outils | Reférence Microsoft Visual Basic for Applications Extensibility 5.3

Sub DelMacro()
Dim Debut As Long
Dim NbLignes As Long

    With ThisWorkbook.VBProject.VBComponents("ModuleA").CodeModule
        Debut = .ProcStartLine("MacroADetruire", vbext_pk_Proc)
        NbLignes = .ProcCountLines("MacroADetruire", vbext_pk_Proc)
        .deleteLines Debut, NbLignes
    End With

End Sub
 
Re : Supprimer toutes les Macros!!

Une variante, nettement plus radicale : détruit tout le code VBA, Modules, Modules de Classes , UserForms
Code:
Option Explicit

'   Cocher Outils | Reférence Microsoft Visual Basic for Applications Extensibility 5.3

Sub DelVBA()
Dim VBComp As VBIDE.VBComponent
Dim VBComps As VBIDE.VBComponents

    Set VBComps = ThisWorkbook.VBProject.VBComponents

    For Each VBComp In VBComps
       Select Case VBComp.Type
          Case vbext_ct_StdModule, vbext_ct_MSForm, vbext_ct_ClassModule
                VBComps.Remove VBComp
          Case Else
                With VBComp.CodeModule
                   .DeleteLines 1, .CountOfLines
                End With
       End Select
    Next
End Sub
 
Dernière édition:
Je vous explique plus en détail : pour faciliter le travaille de mes collègues, je code gracieusement en VBA. Mais cela me met hors de moi, quand je retrouve sur d'autres sites mon travail, sans que l'on ne m'ait rien demandé.

Donc je souhaiterais que mes Macros et Formules de Calcul disparaissent quand elles ne sont pas utilisées sur les ordinateurs que moi et mes collègues utilisons.

Pour se faire, si mon code ne trouve pas un certain fichier présent sur l'ordinateur, cela lance une macro qui efface le code. J'ai fait des tentatives mais tout ne s'efface pas correctement...
 
Bonsoir à tous

Pour infos
Ce que tu cherches à faire n'est pas possible avec Excel, puisque Excel permet à l'utilisateur :
1) d'ouvrir un classeur sans activer les macros
2) d'outrepasser les protections Excel (protection Feuille - protection projet VBA)

Voir à ce sujet cette discussion avec Arthour973

[avis personnel]
Si tu codes gracieusement, c'est donc à titre gratuit.
Dans ce cas, tu devrais être proche de la philosophie Open Source et te féliciter que tes codes se diffusent, non ?
Que devraient faire tous les répondeurs de ce site qui eux aussi proposent du code VBA gracieusement sur le forum quand ils le retrouvent ailleurs sur le web ?
S'en plaindre ?
Bah, non c'est le but que les codes proposés soient utilisés par le plus grand nombre 😉
[/avis personnel]
 
Dernière édition:
si les calculs se font via macros et que tu n'actives pas les macros pour éviter qu'elles s'effacent, j'obtiens ce que je veux : soit les macros disparaissent, soit tu ne les actives pas et la feuilles ne sert à rien

(partager mon travail : oui / que l'on me vole : non)
 
Dernière édition:
Bonjour à toutes et à tous,

... que mes Macros et Formules de Calcul disparaissent quand elles ne sont pas utilisées sur les ordinateurs que moi et mes collègues utilisons...

Une suggestion... pour les collègues non avertis :
Code:
Option Explicit
Private Sub Workbook_Open()
    If Environ("UserName") = "toto" Then MsgBox "OK !" Else MsgBox "Au revoir..."    ' code adapter
End Sub
A bientôt🙂
 
Re, Bonjour 00 😉

1) L'utilisateur ouvre ton classeur sans activer les macros
2) Dans VBE, l'utilisateur met en commentaire tout le VBA qui est censé protéger le classeur
3) L'utilisateur ré ouvre le classeur en activant les macros et utilise le classeur sans restrictions.

00
Un collègue qui utilise un classeur avec du VBA a tôt fait de devenir un utilisateur averti 😉
 
Re-bonjour,

...
1) L'utilisateur ouvre ton classeur sans activer les macros
2) Dans VBE, l'utilisateur met en commentaire tout le VBA qui est censé protéger le classeur
3) L'utilisateur ré ouvre le classeur en activant les macros et utilise le classeur sans restrictions...

Bibi d'acc😀rd !

... Un collègue qui utilise un classeur avec du VBA a tôt fait de devenir un utilisateur averti 😉

Bibi pas d'accord si le "collègue" est un d😳uble zér😳...

A bientôt 🙂🙂
 
Bonjour,

Testes ce code pour voir si il convient. Les modules standards, de classes et les formulaires sont supprimés et pour les modules de feuilles et classeur, les lignes sont effacées.
A mettre dans un module standard d'un autre classeur que celui ciblé et adapter le nom du classeur cible :
Code:
Sub SupprimerModules()

    '1 => Module standard
    '2 => Module de Classe
    '3 => UserForm
    '100 => ThisWorkbook + Feuille
   
    Dim Classeur As Workbook
    Dim ColMod As Object
    Dim Module As Object
   
    'adapter le nom du classeur cible (ce dernier doit être ouvert)
    Set Classeur = Workbooks("ClasseurModule.xls")
   
    Set ColMod = Classeur.VBProject.VBComponents
   
    For Each Module In ColMod
   
        Select Case Module.Type
       
            'supprime Modules standard, de classe et UserForms
            Case 1, 2, 3
                ColMod.Remove Module
           
            'efface les lignes de code des modules feuilles et classeur
            Case 100
                With Module: .CodeModule.DeleteLines 1, .CodeModule.CountOfLines: End With
   
        End Select
       
    Next

End Sub
 
- 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

Discussions similaires

Réponses
21
Affichages
372
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
227
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
573
Themax
T
Réponses
33
Affichages
876
Réponses
16
Affichages
717
Réponses
13
Affichages
489
Retour