Appel d'une procédure de type NomVariable_Click
Résolu
Ein85
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 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!
A voir également:
- Appel d'une procédure de type NomVariable_Click
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Clear type - Guide
- Double appel - Guide
- Signal d'appel - Forum iPhone
3 réponses
Bonjour,
Voir ceci:
https://excel.developpez.com/faq/?page=OleObject#DeclencheOleObject
ce qui donne:
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
Ein85
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
Merci, ça marche très bien maintenant!
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
Et ton code devient donc :
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