IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Passer un contrôle ayant déclenché un évenement en paramètre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut Passer un contrôle ayant déclenché un évenement en paramètre
    Bonjour,

    Je cherche une façon de retrouver le contrôle qui à déclenché un événement pour le passer en paramètre dans un sub. Un peu comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub btnTest_Click()
        Dim cb As MSForms.CommandButton
        'assigner le bouton qui à appeler btnTest_Click() à cb
        MonSub (cb)
    End Sub
     
    Private Sub MonSub(cb As MSForms.CommandButton)
        'Code du sub
    End Sub
    Merci

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Le contrôle qui a déclenché l'évènement donne son nom à la procédure. Dans ce cas, il faut juste écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnTest_Click()
        MonSub btnTest
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut
    Dans les fait, j'ai plusieurs contrôles qui vont appeler la même procédure. Je veux pouvoir retrouver le contrôle qui à appeler l'évènement sans nécessairement connaître le nom du contrôle et de l'évènement.

    Example:

    *= n'importe quel caractère chiffre ou lettre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub btn****_Click()
        Dim cb As MSForms.CommandButton
        'assigner le bouton qui à appeler btn****_Click() à cb
        MonSub (cb)
    End Sub
     
    Private Sub btn****_Click()
        Dim cb As MSForms.CommandButton
        'assigner le bouton qui à appeler btn****_Click() à cb
        MonSub (cb)
    End Sub
     
     
    Private Sub MonSub(cb As MSForms.CommandButton)
        'Code du sub
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Dans une UserForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        Dim cb As MSForms.CommandButton
        Set cb = Me.ActiveControl
        MonSub (cb)
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut
    Merci votre solution marche bien avec les CommandButton. Cependant, j'ai besoin de boutons qui peuvent être complètement transparents et quand même clickables. J'utilise donc des labels.

    Le problème c'est que lorsque qu'il entre dans l'évènement click du label il ne semble pas l'assigner à Me.ActiveControl. Le Me.ActiveControl reste à Nothing.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Re.

    Pour que la méthode Me.ActiveControl fonctionne, il faut que le composant ait le focus au moment où on lit la propriété.
    Les contrôles du type Label ne prennent pas le focus.

    Est-ce qu'il est possible d'utiliser des TextBox en passant la propriété Locked à true ?
    Pour l'aspect, en retouchant la propriété SpecialEffect et BackColor on doit avoir un aspect assez proche.

Discussions similaires

  1. [Rendering] Création d'un contrôle ayant une liste
    Par Woufeigh dans le forum Windows Forms
    Réponses: 0
    Dernier message: 29/03/2009, 21h15
  2. Comment passer un Contrôle en paramètre ?
    Par e040098k dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/06/2007, 12h23
  3. Passer un contrôle en paramètre
    Par Ithilien dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2007, 18h42
  4. [C#] Passer des contrôles comme parametre dans une fonction
    Par sara21 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/09/2006, 13h05
  5. connaitre l'objet ayant déclanché l'évenement ?
    Par XecTech dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/08/2006, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo