Infobulles qui s'affiche au bout de 3s sur un bouton d'une feuille

lilyo

XLDnaute Nouveau
Bonjour à tous,

Sur une feuille, j'ai créer plusieurs CommandButton et 1 label (qui me sert d'infobulle).

Je dois me servir egalement de la macro "click" de chaque CommandButton

Lorsque je passe sur un CommandButton pour le moment il m'affiche le label directement grâce au mouse_move du bouton.

Code:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X > 2 And X < CommandButton1.Width - 2 And Y > 2 And Y < CommandButton1.Height - 2 Then
LabelInfoBulle.Top = CommandButton1.Top + Y - 30
LabelInfoBulle.Left = CommandButton1.Left + CommandButton1.Width + 10
LabelInfoBulle.Visible = True
Else
LabelInfoBulle.Visible = False
End If
LabelInfoBulle.text = "Mon Texte"
End Sub

Maintenant, j'aimerais bien que l'infobulle s'affiche uniquement si je reste plus de 3secondes sur le CommandButton (pour eviter d'avoir l'infobulle qui s'affiche a chaque passage du curseur sur un CommandButton).

J'ai essayer en utilisant la fonction sleep, mais cela ne fonctionne pas trop, vu que lorsque je bouge le curseur du CommandButton, le mouse_move intervient et par consequent le sleep intervient.

Donc je sèche là.

Pouvez m'aider ?

Merci par avance.
 

Pièces jointes

  • Classeur.zip
    22 KB · Affichages: 28
  • Classeur.zip
    22 KB · Affichages: 25
  • Classeur.zip
    22 KB · Affichages: 26

Gelinotte

XLDnaute Accro
Re : Infobulles qui s'affiche au bout de 3s sur un bouton d'une feuille

Allô!

Sans être la plus élégante, voici une option qui fonctionne :

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If X > 2 And X < CommandButton1.Width - 2 And Y > 2 And Y < CommandButton1.Height - 2 Then
LabelInfobulle.Top = CommandButton1.Top + Y - 30
LabelInfobulle.Left = CommandButton1.Left + CommandButton1.Width + 10
PauseTime = 1.3 ' Définit la durée.
Start = Timer ' Définit l'heure de début.
Do While Timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres processus.
Loop

LabelInfobulle.Visible = True
Else
LabelInfobulle.Visible = False
End If
LabelInfobulle.Caption = "Bouton1"
End Sub

Perdrix
 

lilyo

XLDnaute Nouveau
Re : Infobulles qui s'affiche au bout de 3s sur un bouton d'une feuille

Salut.

Je viens d'essayer.

J'ai 2 petits problèmes, le click ne fonctionne uniquement que lorsque le délai est écoulé.
J'aimerais bien gérer le click sans avoir à attendre.

Si je passe sur un bouton et qu'après je sort, il m'affiche quand même l'infobulle. En faite il ne comprend que le faite que je sois aller sur le bouton et ne gère pas que je ne m'y suis pas arreté.


En gros, j'aimerais que lorsque je passe sur mes boutons si je ne reste pas 3s sur mon bouton rien ne se passe, rien ne s'affiche.

Je joins le code modifié.
 

Pièces jointes

  • Classeur.zip
    24.1 KB · Affichages: 21
  • Classeur.zip
    24.1 KB · Affichages: 24
  • Classeur.zip
    24.1 KB · Affichages: 29

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 767
Membres
103 662
dernier inscrit
rterterert