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 :

Affichage d'un Label à l'aide de la fonction MouseMove


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
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 28
    Par défaut Affichage d'un Label à l'aide de la fonction MouseMove
    Bonjour à tous et Bonne année 2016 !

    Voilà, j'écris un code VBA sous Excel 2010 ayant pour but d'afficher une "liste" de labels lorsque le curseur de ma souris passe sur une image (cf. première image en pièce jointe). Ce qui me permettrai ensuite de pouvoir cliquer sur l'un des label visible qui me renverrai à une position de mon réseau que je définie à l'aide d'un lien hypertexte. (le but étant d'arriver à reproduire par exemple, lors d'un clique droit de la souris, le volet qui s'affiche avec les différentes possibilités de sélection mais sans le clique de la souris, seulement en passant le curseur sur une image).

    Mon problème : Mon code une fois terminé, tout fonctionne parfaitement bien sauf un petit détail... j'ai défini au préalable une couleur pour chaque label lorsque le curseur passe dessus (à l'aide d'un Private Sub Label_MouseMove) sauf que la couleur s'affiche lorsque je survole les labels alors que je n'ai pas survolé l'image auparavant ( cf. seconde image en pièce jointe).
    Je voudrais donc qu'aucune couleur n'apparaisse tant que je n'ai pas survolé mon image.

    Voilà le code pour un label uniquement :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    Private Sub Label1_Click()
    ThisWorkbook.FollowHyperlink "", NewWindow:=True
    End Sub
     
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
            Label1.BackColor = RGB(85, 151, 249)
            Label2.BackColor = RGB(208, 208, 208)
            Label3.BackColor = RGB(208, 208, 208)
            Label4.BackColor = RGB(208, 208, 208)
    End Sub
     
    Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ActiveSheet.Label1.Caption = "Armoire de Puissance"
    ActiveSheet.Label2.Caption = "Plan de Circulation des Fluides"
    ActiveSheet.Label3.Caption = "Armoires de Commandes"
    ActiveSheet.Label4.Caption = "Chambre de Combustion"
    Label1.BackColor = RGB(208, 208, 208)
    Label2.BackColor = RGB(208, 208, 208)
    Label3.BackColor = RGB(208, 208, 208)
    Label4.BackColor = RGB(208, 208, 208)
    End Sub
     
    Private Sub Image2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ActiveSheet.Label1.Caption = ""
    ActiveSheet.Label2.Caption = ""
    ActiveSheet.Label3.Caption = ""
    ActiveSheet.Label4.Caption = ""
    Label1.BackColor = vbWhite
    Label2.BackColor = vbWhite
    Label3.BackColor = vbWhite
    Label4.BackColor = vbWhite
    End Sub
    J'ai déjà essayé sans succès cette solution :

    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
     
     
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
          If X < Image1.Width - 40 Then
            Label1.BackColor = RGB(85, 151, 249)
            Label2.BackColor = RGB(208, 208, 208)
            Label3.BackColor = RGB(208, 208, 208)
            Label4.BackColor = RGB(208, 208, 208)
          Else
            Label1.BackColor = RGB(255, 255, 255)
            Label2.BackColor = RGB(255, 255, 255)
            Label3.BackColor = RGB(255, 255, 255)
            Label4.BackColor = RGB(255, 255, 255)
          End If
    End Sub
    Première Image :

    Nom : Première image.jpg
Affichages : 669
Taille : 153,5 Ko

    Deuxième Image :

    Nom : deuxième image.jpg
Affichages : 664
Taille : 147,3 Ko


    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Utilises une variable public (déclarée en entête du module) de type Boolean que tu alimentes lors du survol de l'image :

    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
    18
    Public Flag As Boolean
     
    Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Flag = True
    End Sub
     
    Private Sub Label1_Click()
    ThisWorkbook.FollowHyperlink "", NewWindow:=True
    End Sub
     
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If Flag Then
            Label1.BackColor = RGB(85, 151, 249)
            Label2.BackColor = RGB(208, 208, 208)
            Label3.BackColor = RGB(208, 208, 208)
            Label4.BackColor = RGB(208, 208, 208)
       End If
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 28
    Par défaut
    Bonjour pijaku,

    Je n'avais pas pensé à cette solution là !
    Je viens de la tester et elle fonctionne mais lorsque tu passes une fois sur l'image le "Flag" reste à l'état haut du coup le problème réapparaît..
    Il faudrait donc le remettre à l'état bas avec une temporisation mais je ne sais pas si cela fonctionnerai.

    Cordialement,

    Yoann

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Pour faire ce que tu souhaites, une solution consiste à "encapsuler" tous tes contrôles dans un label.
    Note : ce label peut être rendu "transparent" en réglant ces propriétés border à 0, backStyle = transparent et caption = ""
    Il faut également superposer légèrement les labels sur l'image.

    Je t'ai fait un exemple en pj.
    Pièce jointe 197154

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 28
    Par défaut
    J'ai la solution !
    Lors du survol de l'image 2 (en arrière plan), on pose la condition Flag = False

    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
    18
    19
    20
    21
    22
    23
    24
     
     
    Public Flag As Boolean
     
    Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Flag = True
    End Sub
     
    Private Sub Image2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Flag = False
    End Sub
     
    Private Sub Label1_Click()
    ThisWorkbook.FollowHyperlink "", NewWindow:=True
    End Sub
     
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If Flag Then
            Label1.BackColor = RGB(85, 151, 249)
            Label2.BackColor = RGB(208, 208, 208)
            Label3.BackColor = RGB(208, 208, 208)
            Label4.BackColor = RGB(208, 208, 208)
       End If
    End Sub
    Merci à toi Pijaku !!!

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 28
    Par défaut
    Je vois que j'ai eu la même idée que toi

    Je te remercie beaucoup je vais enfin pouvoir continuer !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/11/2006, 18h08
  2. [Perl/tk]affichage simultané Entry/Label
    Par VinnieMc dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 07/11/2006, 23h32
  3. Réponses: 2
    Dernier message: 26/10/2006, 16h13
  4. Affichage d'un label en fonction d'un tableau bd
    Par oOoOuuhmAn dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 02/03/2006, 17h00
  5. Affichage du contenu label
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/09/2005, 13h33

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