userform et combobox

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

fanfan38

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 982
Membres
103 079
dernier inscrit
sle