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!
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
Statut
Membre
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