Appel d'une procédure de type NomVariable_Click

[Résolu/Fermé]
Signaler
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
Bonjour à tous,

J'ai un programme qui crée des boutons dynamiquement dans une feuille Excel et qui leur assigne du code pour l'événement click.

Je suis en train de créer une nouvelle macro qui fait une recherche sur tous les boutons de la feuille et si l'un a "Delete" comme caption, je veux déclencher l'événement Click dudit bouton. J'ai fait pas mal de tests et de recherches mais je n'ai pas réussi à y parvenir.

Voici mon code:

Private Sub DeleteMacro_Click()

Dim Ctrl As OLEObject
Dim MyVar As String

For Each Ctrl In ActiveSheet.OLEObjects

      If Ctrl.Object.Caption = "Delete" Then
        MyVar = Ctrl.Name
        Call MyVar_Click
      End If
    
Next Ctrl

End Sub

Merci d'avance!

3 réponses

Messages postés
7569
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2021
664
Bonjour,

Voir ceci:

https://excel.developpez.com/faq/?page=OleObject#DeclencheOleObject

ce qui donne:

Private Sub DeleteMacro_Click()

Dim Ctrl As OLEObject
Dim MyVar As String
Dim mafeuille As String
mafeuille = ActiveSheet.Name

For Each Ctrl In ActiveSheet.OLEObjects

      If Ctrl.Object.Caption = "Delete" Then
        MyVar = Ctrl.Name
     Application.Run (mafeuille & "." & MyVar & "_Click")
      End If
    
Next Ctrl

End Sub
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016

Merci, ça marche très bien maintenant!
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
Bonjour,

Essaie
MyVar=Ctrl.Name & "_Click"
Application.Run MyVar


(plutôt que Call).

A+
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016

Bonjour,

Malheureusement j'obtiens l'erreur d'exécution 1004: Erreur définie par l'application ou par l'objet.

Sais-tu comment y remédier?
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016

Finalement cs_Le Pivert a trouvé la solution mais la tienne m'a aidé ailleurs. Merci à toi pour ton aide.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Bonjour,

Une autre méthode est présentée ici : CallByName .

Il convient toutefois de ne pas déclarer les fonctions événementielles en Private pour que cela fonctionne.
Exemple :
remplacer
Private Sub CommandButton1_Click()
par
Sub CommandButton1_Click()


Et ton code devient donc :
Sub DeleteMacro_Click()
Dim Ctrl As OLEObject
Dim MyVar As String

   For Each Ctrl In ActiveSheet.OLEObjects
      If Ctrl.Object.Caption = "Delete" Then
         MyVar = Ctrl.Name
         CallByName ActiveSheet, MyVar & "_Click", VbMethod
      End If
   Next Ctrl
End Sub