Supprimer une macro donnée dans une feuille

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

Jack2

XLDnaute Occasionnel
Bonjour le Forum,

J'ai bien trouvé des exemples de suppression de macro sur le forum, notamment par MichelXLD je crois, mais je n'arrive pas, lorsque je copie puis renomme une feuille, à ne supprimer qu'une macro sur les deux existantes dans la feuille copiée (cf. feuilles avant et après du fichier joint).

Merci par avance
A+ Jack2
 

Pièces jointes

Dernière édition:
Re : Supprimer une macro donnée dans une feuille

Merci Geneviève,

J'ai dû mal m'expliquer. J'ai une feuille appelée "Avant" qui est copiée et qui change de nom, ce qui donne respectivement les feuilles "Avant" et "Après" dans mon exemple). Ce que je voudrais faire, c'est que la feuille Avant garde les deux procédures :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Onglet As String
If Target.Count > 1 Then Exit Sub
If (Target.Address = "$A$1") And (Target.Value <> "") Then Sheets("Menu").Select
End Sub

Private Sub Bouton_Saisie_Click()
    UserForm1.Show
End Sub
et la feuille "Après" supprime la procédure Sub Bouton_Saisie_Click() pour qu'il ne reste plus que la première :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Onglet As String
If Target.Count > 1 Then Exit Sub
If (Target.Address = "$A$1") And (Target.Value <> "") Then Sheets("Menu").Select
End Sub
EDIT : J'ai actualisé le fichier du post 1 pour être plus compréhensible
Merci et bon week-end à tous
Jack2
 
Dernière édition:
Re : Supprimer une macro donnée dans une feuille

Bonjour,

A mettre dans un module général.
Création de la nouvelle feuille, suppression de la macro idoine, et suppression du bouton de commande.

Code:
Sub CréationFeuilleEtSuppressionMacroEtBouton()
    Sheets("Avant").Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        'Eventuellement lui donner un nom en décommentant la ligne ci-dessous
        '.Name ="MaNouvelleFeuille"
        With .Parent.VBProject.vbcomponents(ActiveSheet.CodeName).codemodule
            .deleteLines .ProcStartLine("Bouton_Saisie_Click", 0), .ProcCountLines("Bouton_Saisie_Click", 0)
        End With
        'Supprimer le bouton de la macro
        .OLEObjects("Saisie").Delete
    End With
End Sub

A+
 
Re : Supprimer une macro donnée dans une feuille

Bonjour Hasco, bonjour le Forum,

Merci beaucoup pour le coup de main, c'est sympa. Je n'aurais jamais pensé à remplacer vbcomponents("Module3") par vbcomponents(ActiveSheet.CodeName) et en plus tu m'évites une boucle pour la suppression du bouton de saisie. Je vais essayer ça en rentrant.

A+ Jack2
 
Re : Supprimer une macro donnée dans une feuille

Bonsoir Hasco, Bonsoir le Forum

J'ai cherché un peu partout et je n'arrive pas à trouver pourquoi ton code ne fonctionne pas quand je l'utilise. D'après ce que j'ai pu trouver ça devrait marcher. Ci-joint 2 essais avec commentaires. Si tu peux jeter un coup d’œil, je t'en remercie.

A+ Jack2
 

Pièces jointes

Re : Supprimer une macro donnée dans une feuille

Salut Jack, genevieve78, Hasco🙂, le Forum

cela devrait mieux marcher

Code:
Sub Creer_Onglet()
Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
With ActiveSheet
    .Name = "MaNouvelleFeuille"
        With .Parent.VBProject.vbcomponents(ActiveSheet.CodeName).codemodule
            .deleteLines .ProcStartLine("Saisie_Click", 0), .ProcCountLines("Saisie_Click", 0)
        End With
        .OLEObjects("Saisie").Delete
    End With
End Sub

Saisie_Click <> Bouton_Saisie_Click

Bonne Journée
 

Pièces jointes

Dernière édition:
Re : Supprimer une macro donnée dans une feuille

Bonjour tout le monde,

Merci Dull pour la correction. J'ai oublié de modifier le nom de la procédure dans le classeur. Il me semble que le code donné par Hasco fonctionnait quand je l'ai essayé au boulot, comme celui que tu as corrigé, et qui correspond à celui de Hasco, fonctionne (toujours au boulot - Excel 2007). Je dois avoir un problème chez moi (Excel 2003). Je vais le réinstaller et voir ce que ça donne.

Merci à tous, je pense que le sujet est clos.

A+ Jack2
 
Re : Supprimer une macro donnée dans une feuille

Bonjour à tous

Je dois avoir un problème chez moi (Excel 2003). Je vais le réinstaller et voir ce que ça donne.

Attention, il y a des ajouts qui peuvent avoir été fait sur les versions récentes. Il faut donc debugger, en mettant un point d'arêt avec F9 dans ton code sur Xl2003 pour voir où se trouve le problème.
 
Re : Supprimer une macro donnée dans une feuille

Re Bonjour tout le monde,

Je vais vérifier ce soir le code de la suppression de la macro. Il plante systématiquement sur la suppression de l'objet. Je poste la réponse ce soir.

Bonne journée à tous,

Jack2
 
Re : Supprimer une macro donnée dans une feuille

Re,

Dans le fichier que tu nous as donné en post#1 le bouton est un bouton ActiveX, vérifie sur ton fichier sur lequel ça plante que le bouton ne soit pas un bouton de formulaire, auquel cas il faudra modifier:

Remplacer
Code:
 .OLEObjects("Saisie").Delete

Par
Code:
 .Shapes("Saisie").Delete

A supposé que le bouton s'appelle 'Saisie' (le nom affiché dans la zone de texte à gauche de la barre de formule, quand tu sélectionne le bouton [de formulaire])

A+
 
Re : Supprimer une macro donnée dans une feuille

Bonsoir tout le monde,

Tu as raison Hasco. Avec le code :
Code:
.Shapes("Saisie").Delete
cà marche très bien. J'aurais dû m'en douter puisque j'utilisais :
Code:
For Each Obj In ActiveSheet.Shapes
    Obj.Delete
Next Obj
(les débutants manquent de logique...). Par contre, ça plante toujours sur la ligne suivante qui se met en surbrillance :
Code:
With .Parent.VBProject.vbcomponents(ActiveSheet.CodeName).codemodule
avec erreur 1004 : l'accès par programme au projet Visual Basic n'est pas fiable

Bon week-end à tous
A+ Jack2
 
Re : Supprimer une macro donnée dans une feuille

Bonjour,

Il faut aller dans les options de sécurité des macros: dans l'onglet 'éditeur approuvés', en bas, cocher 'faire confiance au projet visual basic'. Sans cela impossible du supprimer une macro ou un module par VBA.

A+
 
- 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
8
Affichages
240
Réponses
5
Affichages
448
Retour