XL 2021 Commentaire au survol d'un checkbox d'un userform

Nicolas JACQUIN

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,

Comme le titre le dit, je cherche à mettre un commentaire ou note au survol d'un checkbox d'un userform,
je sais que ça se fait et qui en a qui savent faire, mais plus moyen de trouver.

Merci d'avance à tous
 
Solution
Bonjour tous le monde,
J'ai trouvé ma solution je pense

Dans un module

VB:
Public Const MyString1 = "Les 1"
Public Const MyString2 = "Les 2"
Public Const MyString3 = "Les 3"
Public Const MyString4 = "Les 4"

Et dans le userform

Code:
Private Sub CheckBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    commentary CheckBox1, vbCrLf & MyString1
End Sub

Private Sub CheckBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    commentary CheckBox2, vbCrLf & MyString2
End Sub

Private Sub CheckBox3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    commentary CheckBox3, vbCrLf & MyString3...

patricktoulon

XLDnaute Barbatruc
re
dans le userform2 le label est dynamique

@fanch55 la disparition n'est pas gérée par le move eventuel sur un autre control mais bel et bien par le curseur qui quite la périphérie du rectangle corespondant au rectangle qu'occupe le control
et cela sans api ;)
le move déclenche l'apparition c'est tout
regarde bien
demo.gif
 

Pièces jointes

  • commentaire infobule pour control dans userform.xlsm
    34.3 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Avec 0.6 ça fonctionne. Alors sans API... peut-être en faudrait-il un peu pour les ratios Pixel/Point.

Je n'a pas décrypté ton code mais il y a un truc qui me questionne, c'est l'appel à InfoBulle() à chaque évènement MouseMove() dont on sait qu'il se succèdent en rafale dès qu'on bouge le curseur. InfoBulle() qui fait une boucle sur le temps.
 

patricktoulon

XLDnaute Barbatruc
re
a chaque apel tim est redimé donc pas de soucis

timer-tim
=
timeractuel-le passé
redimé a chaque appel puisque relancé
ca permet justement d’éviter le scintillement
;)et donc le petit delay a la sortie de la phériphérie occasionnée par le do/loop permet de fermer le commentairec car en sortie il n'y a plus rien qui pilote il faut donc un on time+0.00xxx
tout simplement
en gros au move on rapproche tim
et oui dans la video je te l'ai dit "change 0.75 ou 0.60"en te disant que tu pouvais remplacer ça par la méthode de ton choix
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour les MouseOveristes,
J'ai pas tout compris de ton système de timer mais bon, si ça fonctionne...
Perso j'aurais fait ça...

Edit: ce qui d'une manière ou d'une autre est la même méthode que celle utilisée en Post #9 sauf que j'ai externalisé le test du curseur sur l'objet dans un module dédié générique qui traite tous les types d'objets. Module d'ailleurs complété de quelques fonctions utiles en Post #29 sujet d'une ressource à venir.
 

Pièces jointes

  • commentaire infobule pour control dans userform(1).xlsm
    22.4 KB · Affichages: 3
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
en voila une belle remarque @fanch55 je m'était déjà penché sur la question
alors au debut je me suis dit comme on adopte certainement le label dynamique
je vais le mettre dans le parent me.controls.add/ me.leparent.controls.add
sauf que dans ton exemple par exemple la frame est trop petite
don l'affichage sera coupé
donc le calcul du positionnement du commentaire doit être fait a partir du userform mais en prenant en compte l'arborescence des ascendants entre le userform et le commentaire
comme je le fait pour déterminer le rectangle dans emplacement Control
ensuite vient un autre problème
le label n'est pas un control prioritaire par rapport a une frame
il est donc fort possible qu'il passe quand même en arrière plan

bref comme tu vois j'y ai déjà pensé
 

Discussions similaires

Statistiques des forums

Discussions
312 836
Messages
2 092 656
Membres
105 479
dernier inscrit
chaussadas.renaud