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 :

Utiliser un "groupe" de labels sur clic souris dans un Userform


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut Utiliser un "groupe" de labels sur clic souris dans un Userform
    Un userform,
    une série de labels dont chaque Caption correspond à autant de champs de saisie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	Label	Label	Label	...
    	Champ	Champ	Champ	...
    Souhaitant utiliser l'événement MouseDown sur l'ensemble des labels pour afficher un message identique, (masqué par MouseUp) j'ai pensé les grouper et réaliser une procédure unique.
    Les grouper, l'éditeur vba le permet.
    Le controlTipText du groupe fonctionne.
    Par contre, impossible de nommer le groupe (comme avec les CheckBox ou OptionButton)
    - la propriété GroupeName n'existe pas pour le groupe
    - la propriété Name pour le groupe non plus

    Les collections :
    J'ai testé en créant une collection des différents labels concernés, et un module de classe pour intercepter les événements subis par les labels.
    Malheureusement, si les événements DblClick et change sont bien interceptés, il n'en est pas de même des événements MouseDown et MouseUp.

    Existerait-t-il une solution "simple", avec des label (sans utiliser des textbox) qui puisse résoudre ce problème :
    MouseDown sur l'un quelconque de plusieurs labels conduisant à un message unique par une procédure unique.
    (MouseUp devant masquer le message)
    Par avance, merci de votre réponse.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Un module de classe nommé LabelsEvents
    Option Explicit
    Public WithEvents MyLabel As MSForms.Label
     
    Private Sub MyLabel_MouseDown(ByVal Button As Integer, ByVal Shift As Integer _
                    , ByVal X As Single, ByVal Y As Single)
        MyLabel.Parent.Caption = "Afficher un message"
    End Sub
     
    Private Sub MyLabel_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _
                    ByVal X As Single, ByVal Y As Single)
        MyLabel.Parent.Caption = MyLabel.Parent.Name
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Un formulaire contenant 3 labels nommé Label1,Label2 et Label3
    Option Explicit
    Dim MesLabels As Collection
     
    Private Sub UserForm_Initialize()
        Dim LabEvent As LabelsEvents, i As Long
        Set MesLabels = New Collection
        For i = 1 To 3
            Set LabEvent = New LabelsEvents
            Set LabEvent.MyLabel = Me.Controls("Label" & i)
            MesLabels.Add LabEvent
        Next
    End Sub
    Ca fonctionne tres bien chez moi, mais je n'ai peut etre pas compris ce que tu cherche a faire.

    Cordialement,

    Tirex28/

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello tirex !
    Tu sais quoi ? Je n'avais ni l'événement MouseDown ni up.
    J'ai posé ma question
    J'ai fermé le fichier
    Pour tester ton code, je l'ai réouvert prêt à ajouter ces deux événements même s'ils n'apparaissaient pas dans la liste dans le module de classe, et tu ne sais pas mais ils sont tous là, de BeforeDragOver à MouseUp.
    Sans toi, je n'y serais jamais retourné !
    Un grand merci

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Re,

    Un grand merci
    De rien, pour info les évènements d'un objet sont répertoriés dans l'explorateur d'objet au même titre que ses méthodes et propriétés.

    A+

    Tirex28/

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    En principe ils apparaissent dans le module de classe mais j'ai eu un problème. J'en ai d'ailleurs plusieurs avec ce foutu fichier : Je mets un bouton, j'écris du code "derrière", j'exécute, le bouton disparaît, le code reste.
    Je relance l'ouverture de l'usf, l'usf n'est plus reconnu... etc.
    Finalement, j'ai effacé la macro d'ouverture, l'ai ré-écrite et tout est rentrée dans l'ordre... pour le moment !
    Depuis, j'ai fermé le fichier et je suis passé à autre chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture formulaire sur clic souris
    Par Michel DELAVAL dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2006, 21h33
  2. Réponses: 3
    Dernier message: 25/09/2006, 20h35

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