Alimenter une combobox en fonction textbox

Résolu
Bonjour,

Cherchant depuis maintenant quelques temps, je commence à perdre la tête et je viens vers vous pour m'aiguiller.

Je souhaiterai alimenter une combobox en fonction du nom apparaissant dans la textbox. Le pire dans cette histoire, c'est que j'ai réussi à faire en sorte que ce nom apparaissent grâce au choix effectué dans une première listbox - mais l'inverse je n'y arrive pas :(

Alors je l'imagine comme cela mais rien ne se passe

Private Sub ComboBox4_Change()
    If TextBox2 = "fonctionnaire" Then
        ComboBox4.AddItem "journée"
        ComboBox4.AddItem "journée férié"
        ComboBox4.AddItem "nuit"
    End If
    
    If TextBox2 = "CDI" Then
        ComboBox4.AddItem "..."
    End If
         
End Sub


Merci à vous

5 réponses

  1. Modérateur
    Salut,

    Puisque le contenu de ta combo doit varier en fonction de la saisie d'un textbox, je choisirais déjà comme événement déclencheur de la macro, l'événement TextBox_Exit.
    D'autre part, si tu utilises un même combo pour plusieurs listes, il convient de supprimer à chaque fois les items de cette liste (méthode .Clear).
    Une dernière chose, dans ton cas je privilégierais un Select Case plutôt que des If, plus explicite...

    Par conséquent, voici un code à essayer :
    Private Sub UserForm_Initialize()
        ComboBox4.Clear
    End Sub
    
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'selon le cas du contenu de textbox2
    Select Case TextBox2
        Case "fonctionnaire"
            ComboBox4.Clear
            ComboBox4.AddItem "journée"
            ComboBox4.AddItem "journée férié"
            ComboBox4.AddItem "nuit"
        
        Case "CDI"
            ComboBox4.Clear
            ComboBox4.AddItem "..."
    
        Case Else
            ComboBox4.Clear
            MsgBox "Erreur de saisie"
            
    End Select
    End Sub
    1
    1. Modérateur
      Le problème vient de l'endroit ou est indiqué Fonctionnaire ou CDI. Dans ton code tu nous indique : Select Case ComboBox1 or il ne sera jamais indiqé CDI dans ta combobox1 mais dans le textbox...
      Ensuite, vérifie bien l'orthographe... Dans ta feuille, tu saisies "Fonctionnaire", mais dans le code on voit "fonctionnaire". C'est différent!...
      Essaye :
      Private Sub ComboBox1_Change() 
      'Selectionne la même ligne que le nom 
          Dim Lgn& 
          Lgn = ComboBox1.ListIndex + 1 
      'Inscrit le statut en textbox 
      With Sheets("ftp") 
          TextBox2.Value = .Cells(Lgn + 1, 4) 
      End With 
      
      'Mettre à jour la combo2 en sélectionnant un nom dans la combo1 
      'en fonction de ce qui apparait dans le TextBox2
          Select Case TextBox2 
              Case "Fonctionnaire" 
                  ComboBox4.Clear 
                  ComboBox4.AddItem "journée" 
                  ComboBox4.AddItem "journée férié" 
                  ComboBox4.AddItem "nuit" 
           
              Case "CDI" 
                  ComboBox4.Clear 
                  ComboBox4.AddItem "..." 
           
      End Select 
      End Sub
      --
      Cordialement,
      Franck P
      1
      1. Parfait

        Merci pijaku

        Je valide
        0
    2. Merci Pijaku,

      Juste une question, la combobox2 pourrait elle se mettre à jour lorsqu'un nom dans la combobox1 est selectionné ? (donc sans avoir à cliquer sur le textbox pour la mettre à jour)
      0
      1. Modérateur
        Bonjour!

        la combobox2 pourrait elle se mettre à jour lorsqu'un nom dans la combobox1 est selectionné ?
        Bien entendu!...
        Pour cela, nous allons utiliser l'événement Change de la ComboBox1.
        Private Sub ComboBox1_Change()
        Select Case ComboBox1
            Case "fonctionnaire"
                ComboBox2.Clear
                ComboBox2.AddItem "journée"
                ComboBox2.AddItem "journée férié"
                ComboBox2.AddItem "nuit"
            
            Case "CDI"
                ComboBox2.Clear
                ComboBox2.AddItem "..."
        
            Case Else
                ComboBox2.Clear
                
        End Select
        End Sub

        N'hésite pas...
        0
        1. Bonjour,

          Alors je viens d'essayer ce bout de code, cependant ça ne réagit pas en changeant de nom dans la combo1. J'ai essayer en faisant un "private sub textbox2_change()" mais pas non plus... Je te met le fichier pour que tu puisse voir plus facilement.

          https://www.cjoint.com/?BEFjQtZywk3
          0