Appel d'une procédure de type NomVariable_Click
Résolu
Ein85
Messages postés
32
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
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:
Merci d'avance!
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
-
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 -
Bonjour,
EssaieMyVar=Ctrl.Name & "_Click" Application.Run MyVar
(plutôt que Call).
A+ -
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 :
remplacerPrivate Sub CommandButton1_Click()
parSub 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