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
voila une version de ma méthode avec des static
pour eviter les scintillements même ceux des texte au move dans les controls
VB:
Sub InfoBulle(check As Object, msg)
    Static A: Static B: Static oldctrl
    Dim pos As pointapi, Tim#, Criter

    If oldctrl <> check.Name Then
        A = EmplacementControl(check)
        B = EmplacementControl(check, 1)
        oldctrl = check.Name

        With commentaire 'le commentaire est la frame
            .Visible = True
            .ZOrder 0
            .Controls("message").Caption = UCase(check.Name) & vbCrLf & msg
            .Move B(0) + check.Width, B(1) - .Height
            If .top < 0 Then .top = check.top + check.Height
            If .Left > Me.InsideWidth - .Width Then .Left = check.Left - .Width
        End With

    Else
        A = EmplacementControl(check)
        B = EmplacementControl(check, 1)

        Tim = timer
        Do While timer - Tim < 0.5
            GetCursorPos pos
            DoEvents
            Criter = (pos.X > A(0) And pos.X < A(2)) And pos.Y > A(1) And pos.Y < A(3)
            If Not Criter Then
                commentaire.Visible = False
                oldctrl = ""

                Exit Do
            End If
        Loop

    End If

End Sub
autrement dit au move d'un control
si le nom change pas on passe directement "au else relance une do/loop de 100ms à 500ms
chez moi 0.1 est suffisant
le doevents permet toujours les appels successif mais tout n'est pas recalculé

avant au move j'avais un peu les ecritures du texte qui scintillaient maintenant non puisque c'est fait qu'une fois pour un nouveau control quand on sort la variable oldctrl se vide et donc prête a recevoir le nouveau
 

Pièces jointes

  • commentaire infobule pour control dans userform.xlsm
    21.4 KB · Affichages: 5

Nicolas JACQUIN

XLDnaute Occasionnel
Supporter XLD
test form4.gif
 

patricktoulon

XLDnaute Barbatruc
bon entout cas tu a 3 methode maintenant
methode 1° @Dudu2

méthode universelle vielle comme le mode qui peut siffir dans certains cas

et ma méthode avec la fonction du calendar et la function infobulle

avec ça tu es paré ;)
 

patricktoulon

XLDnaute Barbatruc
le pire c'est que tu continue Nicolas
tu fait constater quoi rien du tout
ça fonctionne comme ça doit marcher c'est tout
maintenant que ça te convienne pas c'est autre chose
il te faudra inventer un pc avec un proc quantique capable de pousser plus loin que le plus rapide des pcs du monde
bon je retourne travailler sur mon autre projet maintenant en même temps que ma serie préféré
 

Discussions similaires