Bonjour à tous

J'ai créé un UserForm assez simple avec 2 zones de saisie (TextBox), 3 listes déroulantes (ComboBox) et un bouton de validation.

Ce que j'aimerais faire (mais je n'y parviens pas):
  • Le bouton est désactivé au chargement du Userform (pas de souci à ce niveau)
  • Activer le bouton de validation (enable = true) lorsque tous les champs sont remplis (les 2 zones et les 3 listes déroulantes)
  • Le désactiver dès qu'il manque un champ

Le problème est que je ne vois pas ou gérér l'événement "tous les champs sont complétés ou non"

Ce que je fais pour contourner:
  • Je "simule" l'activation, désactivation via la propriété Locked et ForeColor:
    Descativé <=> locked =true et ForeColor en gris, Activé <=> locked= False et ForeColor en noir
  • Je gère le passage d'un état à un l'autre au niveau de la méthode MouseMouve de mon bouton

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub ButtonCreerRub_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 
    'On "active" le bouton si l'ensemble des champs sont remplis
    Me.ButtonCreerRub.Locked = Not AreFieldsCompleted()
    Me.ButtonCreerRub.ForeColor = IIf(AreFieldsCompleted(), RGB(0, 0, 0), RGB(160, 160, 160))
 
End Sub
 
'Vérifie que l'ensemble des champs sont remplis
Private Function AreFieldsCompleted() As Boolean
 
    AreFieldsCompleted = (Len(Me.TB_CodeRub.Text) <> 0) And (Len(Me.TB_LibRub.Text) <> 0) And Me.CB_ListRubP1.ListIndex <> -1 _
                        And Me.CB_ListRubP2.ListIndex <> -1 And Me.CB_ListRubP3.ListIndex <> -1
End Function
Mais, je ne pense pas que ce soit la bonne manière de faire.... Comme je débute avec les UF, j'aimerais partir du bon pied.

Merci d'avance à tous.