userform et combobox

  • Initiateur de la discussion Initiateur de la discussion ninajams
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ninajams

XLDnaute Junior
Bonjour,

Je me suis lancer dans la création d'un formulaire multipage. Mais je bloque sur les combobox

Pour la première combobox je n'ai pas de soucis 🙂 :

VB:
Private Sub UserForm_Initialize()

ComboBox1.AddItem "Titre 1"
ComboBox1.AddItem "Titre 2"
ComboBox1.AddItem "Titre 3"

J'ai donc une liste déroulante avec le choix entre 3 résultats (Titre 1, 2 ,3). c'est bien

Problème : sur la combobox 2 je veux que la liste soit en fonction de la combobox 1. (sinon ma liste déroulante atteint les 50 choix.)

si combobox 1 = titre 1 alors j'ai une liste de choix dans la combobox2 (option 1 ,2 3, 4, 5)
si combobox 1 = titre 2 alors j'ai une liste de choix dans la combobox2 qui est différente.(option 6, 7, 8, 9,10)

Et la je suis totalement coincé. Tous ce que j'ai vu sur internet ce reportais avec des listes présentes sur des feuilles excel mais je veux que toutes les options soit saisies directement dans le code. (Je viens de passer 2 heures à nettoyer la base de donnée et souhaite verrouiller les options).

J'ai essayé avec if mais cela ne fonction pas.
Voici un exemple du code. (j'ai essayé plusieurs variantes mais rien ne se passe)
Mais est-ce que je l'ai mis au bonne endroit?

Code:
Private Sub MultiPage1_Change()

If ComboBox1.Value = "Titre 1" Then
ComboBox2.AddItem "test validé"
Else
MsgBox ("fini")
End If
End Sub

autre code essayé
Code:
Private Sub MultiPage1_Click(ByVal Index As Long)

If ComboBox1.Value = "Titre 1" Then
ComboBox2.AddItem "test validé"
Else
MsgBox ("fini")
End If


End Sub


Lorsque j'ai placé les ComboBox2.AddItem dans Private Sub UserForm_Initialize() tous les choix apparaissent.

J'en conclu que soit je place le code au mauvais emplacement soit je fais n'importe quoi ! 😉

Donc si vous pouvez m'éclairer ça serait sympa.

Merci à vous et bonne nuit
 
Solution
Bonjour
Je te propose

VB:
Private Sub ComboBox1_Change()
 Dim t
 If ComboBox1.Value = "" Then Exit Sub
 Me.ComboBox2.Clear
 If Me.ComboBox1.Value = "Titre 1" Then
     t = Array(1, 2, 3, 4, 5)
    Me.ComboBox2.List = t
 ElseIf Me.ComboBox1.Value = "Titre2" Then
     t = Array(5, 6, 7, 8, 9, 10)
     Me.ComboBox2.List = t
 End If
End Sub
A+ François
Bonjour
Je te propose

VB:
Private Sub ComboBox1_Change()
 Dim t
 If ComboBox1.Value = "" Then Exit Sub
 Me.ComboBox2.Clear
 If Me.ComboBox1.Value = "Titre 1" Then
     t = Array(1, 2, 3, 4, 5)
    Me.ComboBox2.List = t
 ElseIf Me.ComboBox1.Value = "Titre2" Then
     t = Array(5, 6, 7, 8, 9, 10)
     Me.ComboBox2.List = t
 End If
End Sub
A+ François
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
58
Réponses
13
Affichages
515
Réponses
2
Affichages
134
Retour