Checkbox dans un userform VBA

Bonjour,

J'ai créé un userform avec une checkbox. Je sais qu'il est possible de lancer une action en fonction de son statut : cochée ou décochée.

Pour le moment j'utilise ce code qui fonctionne uniquement lorsque l'USF est validé :

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then 'Si coché ...
    ' MON CODE
        Else
     ' MON CODE
    End If
End Sub

J'aimerais aller plus loin avec le statut de la checkbox, lorsque cette dernière est cochée :

Est-il possible d'empêcher la saisie dans une textbox définie & de rendre obligatoire la saisie dans une autre textbox définie ?

  • TextBox1 = empêcher de mettre le curseur et d'écrire dedans
  • TextBox3 = obliger l'utilisateur à écrire du texte pour valider le formulaire

Merci par avance pour votre aide,

Bapt"

135usfbk.xlsm (17.18 Ko)

Bonjour,

Un essai ...

Recherche ' << ric pour connaître les changements.

J'ai même imposé ( len ) un nombre de caractère dans le commentaire. Mais ce n'est pas obligatoire.

ric

163horusbk-usfbk.xlsm (21.41 Ko)

Bonsoir Ric

Merci pour ton aide.

J'ai souhaité figer le bouton OK que j'avais également créé.

En fonction de ton code j'ai ajouté cela (voir ci-dessous) afin d'avoir la case OK de grisée mais ça n'a pas l'air de fonctionner :

Dim OK As Boolean   ' << ric

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then 'Si coché ...
         Me.TextBox1.Enabled = False   ' << ric
         OK = True  ' << ric
         Me.CommandButton2.Enabled = False ' << horusbk
         OK = True ' << horusbk
      Else
      Me.TextBox1.Enabled = True  ' << ric
      OK = False  ' << ric
      Me.CommandButton2.Enabled = True ' << horusbk
      OK = False ' << horusbk
    End If
End Sub

De plus, je ne sais pas si c'est faisable mais, est-il possible de mettre en évidence la TextBox3 pour montrer qu'il faut absolument mettre du texte : changement de couleur de fond du textbox uniquement lorsque la checkbox est cochée ; apparition de la partie commentaire (cachée par défaut si la choeckbox n'est pas cochée) ... ?

Merci encore !

Bapt"

Bonjour,

Pour le bouton OK ...

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then   'Si coché ...
      Me.TextBox1.Enabled = False
      Me.CommandButton2.Enabled = False
      OK = True
   Else
      Me.TextBox1.Enabled = True
      Me.CommandButton2.Enabled = True
      OK = False
   End If
End Sub

Je regarde pour la 2e partie ...

ric

Bonsoir Ric,

J'ai enlevé les lignes en trop OK = True et OK = False.

Merci encore, je patiente pour la seconde partie

Bapt"

Bonjour,

Tout se joue dans Sub CheckBox1_Click()

Textbox3 en jaune ou blanc.

Textbox3 avec un infobulle ou pas (ControlTipText).

CommandButton1 désactivé ou pas.

ric

121horusbk-usfbk-v2.xlsm (22.49 Ko)

Bonjour toutes et tous

Bonjour Ric et merci

lors de l'initialisation de l'userform en jonglant avec la hauteur et largeur (Height et Width) si, checkbox1 coché ...

ci-joint,

crdlt

André

159horusbk-usfbk-1.xlsm (26.00 Ko)

Bonjour à tous,

@Andre13 ... effectivement, c'est une autre possibilité.

Aussi, le SetFocus c'est excellent.

ric

Bonsoir à tous les deux

Merci Andre13 pour cette solution je vais voir avec mon supérieur la solution qu'il préfère.

J'ai un peu modifié le code de Ric avant que le bouton Enregistrer et Quitter s'affiche lorsque un commentaire de plus de 6 caractères est entré... hélas ça fonctionne pas

Dim OK As Boolean   ' << ric

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then   'Si coché ...
      Me.TextBox1.Enabled = False
      Me.CommandButton2.Enabled = False
      Me.CommandButton1.Enabled = False
      Me.TextBox3.ControlTipText = "* Obligatoire dans le cas d'une cde oubliée."
      Me.TextBox3.BackColor = &HC0FFFF
      OK = True
   Else
      Me.TextBox1.Enabled = True
      Me.CommandButton2.Enabled = True
      Me.CommandButton1.Enabled = True 'Valider quitter
      Me.TextBox3.ControlTipText = ""
      Me.TextBox3.BackColor = &H80000005

      OK = False

       If Len(Me.TextBox3) < 5 Then
        Me.TextBox3.BackColor = &H80000005
        Me.CommandButton1.Enabled = True 'Valider quitter
        OK = False
       End If
   End If
End Sub

Bapt"

Bonjour à tous,

Si j'ai bien compris ton propos ... tu veux que le bouton de commande devienne accessible en tapant un certain nombre de caractères ... l'évènement doit être dans ...

Private Sub TextBox3_change()
   If Len(Me.TextBox3) > 5 Then
      Me.CommandButton1.Enabled = True
   End If
End Sub

ric

C'est exactement ce dont j'avais besoin

Merci beaucoup !

Bapt"

Bonsoir,

Je me suis permis de rouvrir la conversation.

J'ai souhaité appliquer la méthode permettant de neutraliser certaines commandes de formulaire via checkbox mais en le faisant pour une listbox.

Cette listbox est remplie via le code suivant :

Private Sub ListBox1_Click()
'
Dim iRow%
'
With Feuil1
    iRow = .Range("E:E").Find(what:=Me.ListBox1.Text, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row
    Me.lbltrain.Caption = "N° de train : " & CStr(iRow)
    Me.TextBox1.Text = .Cells(iRow, 12)
    Me.TextBox3.Text = .Cells(iRow, 14)
End With
End Sub

et j'ai souhaité désactivé certains boutons lorsqu'il n'y a plus de données dans la listbox via ce code :

Private Sub ListBox1_change()
    If ListBox1.ListCount = 0 Then
        Me.CommandButton2.Enabled = False
        Me.TextBox1.Enabled = False
    End If
End Sub

Toutefois rien ne se passe lorsqu'il n'y a plus d'éléments dans la listbox

Merci d'avance pour vos lumières.

Bapt"

Salut

si tout ce qui concerne le contenu de la ListBox se joue à l'ouverture de l'USF, alors ton test doit se trouver là aussi!

With Feuil1
    For Each rCel In .Range("E5:E" & .Range("E" & Rows.Count).End(xlUp).Row)
      If rCel.Offset(0, 7) = "" Then Me.ListBox1.AddItem rCel.Value
    Next
    If Me.ListBox1.ListCount = 0 Then
        Me.CommandButton2.Enabled = False
        Me.TextBox1.Enabled = False
    End If
End With

A+

Bonjour curulis57,

Merci beaucoup pour ton aide, ça fonctionne super bien !

Je repasse en résolu

Bonne journée,

Bapt"

Rechercher des sujets similaires à "checkbox userform vba"