Alimenter une combobox en fonction textbox

Résolu/Fermé
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015 - 30 mai 2012 à 16:30
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015 - 31 mai 2012 à 13:47
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
30 mai 2012 à 17:09
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 31/05/2012 à 12:16
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
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
31 mai 2012 à 13:47
Parfait

Merci pijaku

Je valide
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
30 mai 2012 à 17:23
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
31 mai 2012 à 09:03
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
Modifié par Co_nexion le 31/05/2012 à 09:43
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