suppression de macros

numis

XLDnaute Nouveau
Bonjour

Comment faire pour supprimer d'un seul coup toutes les macros d'un fichier?
Merci d'avance
 

JCGL

XLDnaute Barbatruc
Re : suppression de macros

Bonsoir,

A tes riques et périls :p


Code:
[FONT=Verdana]
[/FONT][FONT=Verdana] 'http://frederic.sigonneau.free.fr/code/VBE/SupprimerToutesMacros.txt

'copier ce code dans un module standard d'un autre classeur que celui[/FONT]
[FONT=Verdana]'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[/FONT]


Bonne soirée
 

jeanpierre

Nous a quitté
Repose en paix
Re : suppression de macros

Bonssoir le fil,

Curieux qu'il faille écrire une macro pour supprimer une macro.. Pourquoi ne pas la supprimer.. simplement....

Peut-être rien compris.....

Bonnes Pâques à tous....


Jean-Pierre
 

Piboulet

XLDnaute Nouveau
Re : suppression de macros

Bonsoir à tous
Je réactive ce fil car je n'arrive pas à appliquer la macro de JCL. j'ai systématiquement la réponse : "erreur d'exécution 1004 ; le projet d'exécution visual basic n'est pas fiable".
Cela bogue au niveau de : With ActiveWorkbook.VBProject.
je dois mal me débrouiller avec le forum, car je bloque sur les liens indiqués dans d'autre fil traitant du sujet.

Je résume toutefois mon problème :
1) j'ai un classeur avec mes macros, et plusieurs feuilles.
2) Aprés traitement, une feuille résultat doit être isolée sur un classeur séparé.
Cette feuille comporte une macro "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) "
3) La création se passe trés bien, mais la nouvelle feuille du nouveau classeur garde la macro (normal).
4) Je voudrais supprimer cette macro présente sur cette nouvelle feuille créée par copie de l'existante pour que l'utilisateur ouvrant ce classeur résultat ne soit pas gêné par la macro , et n'ait pas de message à l'ouverture du classeur.
Merci pour le coup de pouce.
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : suppression de macros

Bonsoir Piboulet, salut le fil et le forum,

Même si je n'ai pas encore de solution à ton souci (je n'y ai présentement pas encore pensé), ta nouvelle explication est nettement plus claire...
Pour te dire qu'elle n'a vraiment rien à voir avec la première... Important les questions et Important les explications...

Peux-tu mettre un fichier restreint avec une ou deux feuilles et ta feuille Résultat et avec tes macros.

Supprimes et remplces simplement les données qui pourraient être confidentielles (Noms, par exemple), les valeurs n'ont, dans ce cas, pas d'importance, ce ne sont que des chiffres....

Bonne soirée.

Jean-Pierre

Edit : Diou, j'ai du mal, là. Je viens seulement de voir que tu n'es pas à l'origine de la question.... Il aurait, sans doute, été mieux d'ouvrir un nouveau fil.... mais, bon...
 
Dernière édition:

Piboulet

XLDnaute Nouveau
Re : suppression de macros

Bonsoir jeanpierre et tous
Heu... c'est la première fois que je pose cette question!
bien voici un petit fichier source. La macro crée un fichier "récup" qui comporte dans la feuille une ou des macro que je voudrais virer.
Bonne réception
 

Pièces jointes

  • source.xls
    26.5 KB · Affichages: 71
  • source.xls
    26.5 KB · Affichages: 74
  • source.xls
    26.5 KB · Affichages: 73

jeanpierre

Nous a quitté
Repose en paix
Re : suppression de macros

Re Piboulet,

As-tu vu ma réédition de 22h24. Je précise que je n'avais pas vu que tu n'étais pas le créateur du fil et de la question d'origine.... en te précisant même qu'il aurait mieux valu recréer un nouveau fil.....

Ceci dit, la macro proposée par JCGL fonctionne très bien. Il faudrait la mettre dans le fichier "source" et après création du fichier "récup".... l'exécuter dans ce dernier fichier et cela fonctionne. C'est un peu de manip, je te l'accorde, mais pour ce soir, je n'ai pas d'autres solutions...
Je m'y repencherai demain à moins que d'autres solutions te soient proposées entretemps.

Encore désolé pour le quiproquo sur l'origine...;)

Bonne nuit maintenant

Jean-Pierre
 

JCGL

XLDnaute Barbatruc
Re : suppression de macros

Bonsoir
Salut mon ami JP qui a les pieds dans l'eau et qui confond Piboulet et Numis arf

Piboulet : peux-tu essayer ceci

Outils/Macro/Sécurité et cocher dans l'onglet "Editeurs Approuvés" Faire confiance au projet Visual Basic

La macro donnée plus haut fonctionne chez moi

A+
 

jeanpierre

Nous a quitté
Repose en paix
Re : suppression de macros

Salut Jean-Claude,

Ca glisse, ça bouscule, ça tamponne à 22h11. J'espère que tu es bien assuré....:eek:

Oui, pendant plus de dix minutes à 117 m, le plus haut, c'est mon voisin à 117.8 m

Si tu n'as pas vu "Ceci dit, la macro proposée par JCGL fonctionne très bien. Il faudrait la mettre dans le fichier "source" et après création du fichier "récup".... l'exécuter dans ce dernier fichier et cela fonctionne"

Une solution "provisoire", je ne sais pour l'instant...

Bonne soirée à toi.

Amicalement.

Jean-Pierre
 

Piboulet

XLDnaute Nouveau
Re : suppression de macros

Alors la!
Chapeau bas!
Avec la mise à jour proposée par JCGL : Outils/Macro/Sécurité et cocher dans l'onglet "Editeurs Approuvés" Faire confiance au projet Visual Basic
tout est impeccable.
Merci beaucoup à tous les deux, et bonne soirée.
 

MichelXld

XLDnaute Barbatruc
Re : suppression de macros

bonjour


Je sais que j'arrive un peu en retard mais voici une autre possiblité pour supprimer les macros du classeur actif

Code:
Sub SupprimeMacros_ClasseurActif()
    'nécessite d'activer la référence
    '"Microsoft Visual Basic for Applications Extensibility 5.3"
    Dim VbComp As VBComponent
    
    For Each VbComp In ActiveWorkbook.VBProject.VBComponents
        Select Case VbComp.Type
            Case 1 To 3
                ActiveWorkbook.VBProject.VBComponents.Remove VbComp
            Case Else
                With VbComp.CodeModule
                .DeleteLines 1, .CountOfLines
                End With
        End Select
    Next VbComp
    
    'Sauvegarde le nouveau classeur
    'ActiveWorkbook.SaveAs "C:\NomClasseur.xls"
End Sub


Pour info dans Excel 2007, il est possible d'enregistrer directement au format OpenXML sans macros (xlsx):
Code:
Sub ClasseurSansMacros_Excel2007()
    
    Application.DisplayAlerts = False
    'Sauvegarde le classeur actif sans macros
    ActiveWorkbook.SaveAs "C:\NomClasseur.xlsx", xlOpenXMLWorkbook
    Application.DisplayAlerts = True
    
    ActiveWorkbook.Close
End Sub


Bonne journée
MichelXld
 

Piboulet

XLDnaute Nouveau
Re : suppression de macros

Bonjour à tous, et merci MichelXld.
Cela fonctionne trés trés bien également.
Mes collègues susceptibles d'utiliser cette commodité sont géographiquement disséminés , de plus le parc n'est pas homogène en version excel, et leur niveau Excel est trés variable.
Donc, une "petite" question d'importance :
==> Faut-il mettre à jour les postes devant utiliser ce module un à un (cas module JCGL, et/ou cas module MichelXld), c'est à dire le mettre dans les pré-requis du mode d'emploi.
Quels sont les effets secondaires indésirables d'activer "la Confiance du cas JCGL" et/ou "l'Extensibility 5.3 de la solution MichelXld".
Bonne journée.
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : suppression de macros

Re,

Extrait de l'aide XL :

Modifier la liste des éditeurs approuvés pour les macros
Sécurité Soyez prudent lorsque vous exécutez des macros, car elles peuvent contenir des virus. Prenez les précautions suivantes : exécutez un logiciel antivirus à jour sur votre ordinateur ; choisissez un niveau de sécurité élevé pour votre macro ; désactivez la case à cocher Faire confiance à tous les modèles et compléments installés ; utilisez des signatures numériques ; conservez une liste d'éditeurs approuvés.

Pour exécuter ces procédures, Microsoft Internet Explorer version 4.0 ou version ultérieure doit être installé sur votre ordinateur.

Effectuez l'une des actions suivantes :

Pour ajouter un développeur de macros à la liste des éditeurs approuvés

Si vous ne l'avez pas déjà fait, définissez Moyenne ou Elevée comme niveau de sécurité pour les macros.

Procédure

Dans le menu Outils, cliquez sur Options.
Cliquez sur l'onglet Sécurité.
Sous Sécurité des macros, cliquez sur Sécurité des macros.
Cliquez sur l'onglet Niveau de sécurité, puis sélectionnez le niveau de sécurité à utiliser.
Ouvrez le fichier ou chargez la macro complémentaire qui contient des macros certifiées par le développeur que vous voulez ajouter à la liste.
Dans la zone Avertissement de sécurité, activez la case à cocher Toujours faire confiance aux macros provenant de cet éditeur.
Remarque Si la case à cocher Toujours faire confiance aux macros provenant de cet éditeur n'est pas affichée dans la zone Avertissement de sécurité, les macros ne sont pas signées numériquement. Vous ne pouvez pas ajouter ce développeur de macros à la liste des sources fiables sans signature numérique.

Pour supprimer un développeur de macros de la liste des éditeurs approuvés

Dans le menu Outils, cliquez sur Options, puis sur l'onglet Sécurité.

Sous Sécurité des macros, cliquez sur Sécurité des macros.
Cliquez sur l'onglet Éditeurs approuvés.
Cliquez sur la source que vous voulez supprimer de la liste.
Cliquez sur Supprimer.



Personnellement je suis assez téméraire PARCE QUE J'AI UN ANTIVIRUS PERFORMANT ET A JOUR POUR LES SIGNATURES donc je suis en "Sécurité Minimum" et je "Fais Confiance à VBA" que ce soit ici ou au travail.

Tu auras d'autres avis (sujet sensible...)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11