3 combobox en chaine avec VBA sous Excel

Fermé
Grognouff - 3 juil. 2009 à 22:37
 Grognouff - 10 juil. 2009 à 20:57
Bonjour,
voila j'essai de créer 3 combobox sous Excel ou les valeurs affichées dans le seconde sont dépendantes du choix fait dans la premiere et les valeurs affichées dans la troisième dependent du choix fait parmi les valeurs de la seconde.
Pour la première combox, je n'ai que deux valeurs "indoor" ou "outdoor", j'ai donc créé deux cellules avec chacune une valeur et dans les propriétes de la combobox1 (Listfillrange) j'ai choisi la plage des deux cellules où sont inscrites les valeurs.

Pour la seconde combobox, j'aimerai qu'elle me donne le choix entre "indoorexo1" ou "indoorexo2" si j'ai choisi "indoor" dans la premiere et "outdoorexo1" ou "outdoorexo2" si j'ai choisi "outdoor" dans la premiere.
C'est la que ca se complique, parce que en plus j'aimerai que ca ne soit pas en dur dans le programme. Mais que ce soit suivant des cellules contenant "indoorexo1""indoorexo2""outdoorexo1""outdoorexo2".
J'ai donc essayé le code suivant :

Private Sub ComboBox2_Change()
If ComboBox1.Text = "Indoor" Then
ActiveSheet.ComboBox2.Clear
ActiveSheet.ComboBox2.ListFillRange = "Feuil1!B9:B11"
Else
ActiveSheet.ComboBox2.Clear
ActiveSheet.ComboBox2.ListFillRange = "Feuil1!B14:B16"
End If
End Sub

Mais cela me créé une erreur quand je clique sur mon choix parmi les deux proposées sur la combobox2 et de plus si je change de choix dans la combobox1, rien ne se passe dans le combox2 ( ca ne marche qu'une fois en fait).

Pour la troisieme combox, ben j'en suis pas là mais l'idée c'est d'avoir deux variantes pour chaque "indoorexo1""indoorexo2""outdoorexo1""outdoorexo2".

Si une bonne ame prend le temps de lire mon long message et m'aider à résoudre ce gros souci (je suis peu calé en programmation), je l'en remercie par avance.


Grognouff
A voir également:

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 juil. 2009 à 08:47
Bonjour,

L'utilisation n'est pas la même. Tout dépend de ce que l'on cherche à faire. Un formulaire peut aider à la saisie de données par exemple ou rendre la saisie obligatoire. Les propriétés et l'utilisation n'est pas tout à fait la même.

ListFillRange est une propriété en lecteur seulement. On fixe sa valeur dans la liste de propriétés. On ne peut pas la modifier par le code.

Voilà ce que je te propose de faire:

Private Sub Worksheet_Activate()
    ComboBox1.Clear
    ComboBox1.AddItem Range("B9").Value     'Cellule contenant Indoor
    ComboBox1.AddItem Range("B10").Value    'Cellule contenant Outdoor
End Sub 

Private Sub ComboBox1_Change()
    ComboBox2.Clear
    
    If ComboBox1.Text = Range("B9").Value Then
        ComboBox2.AddItem Range("B14").Value     'Cellule contenant Indoorexo1
        ComboBox2.AddItem Range("B15").Value     'Cellule contenant Indoorexo2
    End If
    If ComboBox1.Text = Range("B10").Value Then
        ComboBox2.AddItem Range("B16").Value    'Cellule contenant Outdoorexo1
        ComboBox2.AddItem Range("B17").Value    'Cellule contenant Outdoorexo2
    End If
    
End Sub


Bon courage

;o)
1
Bonjour Polux et Merci pour ton aide.

J'ai compris comment faire et vais pouvoir finir mon projet.

IL me reste une petite question :
Pourquoi pour que ca marche je dois d'abord cliquer sur la feuil2 et puis revenir sur la feuil1 pour que la premiere combobox se remplisse?

Y a t'il un moyen pour que ca marche sans faire cette petite manip?


Merci

Grognouff
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
3 juil. 2009 à 22:42
Bonjour,

Où sont tes combo ? sur un Userform ou sur une feuille ?

0
Bonsoir,

merci de repondre si vite.

Directement sur la feuille.

Question supplémentaire : quel est l'interet de l'un par rapport à l'autre?

Merci

Grognouff
0