Supprimer toutes les Macros!!

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
@
 

kiki29

XLDnaute Barbatruc
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
 

kiki29

XLDnaute Barbatruc
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:

Scoubi7

XLDnaute Nouveau
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...
 

Staple1600

XLDnaute Barbatruc
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:

Scoubi7

XLDnaute Nouveau
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:

DoubleZero

XLDnaute Barbatruc
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:)
 

Staple1600

XLDnaute Barbatruc
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 ;)
 

DoubleZero

XLDnaute Barbatruc
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:Drd !

... 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:oops:uble zér:oops:...

A bientôt :):)
 

Theze

XLDnaute Occasionnel
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
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin