Affichage TextBox conditionné par une plage horaire?

Bonjour tout le monde,

J'aurai besoin de votre aide pour apporter une modification à mon UserForm.

J'ai un TextBox2 qui m'indique l'heure.

J'ai un ComboBox "Poste"avec 3 choix possibles (Matin, Midi, Nuit).

Je souhaiterai remplacer ma ComboBox par un TextBox qui afficherai ceci:

  • Si TextBox2 de 4H et 11H59 : "Poste" affiche "Matin" (je suppose que si je mets 12H, il y aura conflit avec la ligne suivante?)
  • Si TextBox2 de 12H et 19H59 : "Poste" affiche "Midi"
  • Si TextBox2 de 20H et 3H59 : "Poste" affiche "Nuit"
Est-ce possible?

Ci-joint mon fichier:

Merci à tous pour vos réponses,

Cordialement,

xorsankukai

Bonjour

Tu devrais mettre un mot de passe pour l'éditeur VBA

Bonjour Banzai64,

Désolé pour cet oubli,

Le fichier déverrouillé:

Merci,

Cordialement,

xorsankukai

Bonjour

A tester

Bonjour Banzai64,

J'ai tester, ça fonctionne, merci !

Je testerai cet après-midi au boulot (excel 2003).

Sans abuser, je voudrai également rajouter des conditions:

  • Si "Matin" : on ne peut pas cocher CheckBox 16, 17, 18
  • Si "Midi" : on ne peut pas cocher CheckBox 1, 2, 3, 4, 7, 8, 9, 10, 18
  • Si "Nuit": on ne peut pas cocher CheckBox 1, 2, 3, 4, 6, 7, 8, 9, 10, 15, 16, 17

Je me suis inspiré du code que tu m'avais donné pour le conditionnement des CheckBox entre elles, mais ça ne fonctionne pas correctement, il ne doit pas être bien écrit :

Private Sub Poste_Change()
Dim Num
    Dim I As Integer

    If Poste.Value = "Matin" Then
       Num = Array(16, 17, 18)
      For I = 0 To UBound(Num)
       Me.Controls("CheckBox" & Num(I)).Enabled = False
      Next I
      End If

      If Poste.Value = "Midi" Then
      Num = Array(1, 2, 3, 4,  7, 8, 9, 10, 18)
      For I = 0 To UBound(Num)
        Me.Controls("CheckBox" & Num(I)).Enabled = False
      Next I
      End If

      If Poste.Value = "Nuit" Then
      Num = Array(1, 2, 3, 4, 6, 7, 8, 9, 10, 15, 16, 17)
      For I = 0 To UBound(Num)
        Me.Controls("CheckBox" & Num(I)).Enabled = False
      Next I
      End If
      Exit Sub

End Sub

Ce qui ne va pas:

Si je sélectionne "Matin", les cases se verrouillent bien, mais si je sélectionne "Matin" puis "Midi", je cumule le tout. Idem si je sélectionne "Nuit", je n'arrive pas à séparer les 3 conditions.

Avec la modification que tu as apportée précédemment, il ne devrait pas y avoir de souci (vu qu'on ne choisit plus le poste), mais j'aimerai comprendre ou j'ai faux,

Je te remercie sincèrement pour toute ton aide,

Cordialement,

xorsankukai

Bonjour

Avec de verrouiller les Checkbox pense à les déverrouiller

Style

Private Sub Poste_Change()
Dim Num
    Dim I As Integer

      Num = Array(1, 2, 3, 4, 6, 7, 8, 9, 10, 15, 16, 17, 18)
      For I = 0 To UBound(Num)
        Me.Controls("CheckBox" & Num(I)).Enabled = True
      Next I  

    If Poste.Value = "Matin" Then
       Num = Array(16, 17, 18)
      For I = 0 To UBound(Num)
       Me.Controls("CheckBox" & Num(I)).Enabled = False
      Next I
      End If

Bonsoir Bonzai64,

Merci pour la leçon.

C'est nickel !

Bonne soirée,

Sincères salutations.

xorsankukai

Rechercher des sujets similaires à "affichage textbox conditionne plage horaire"