3 combobox en chaine avec VBA sous Excel
Grognouff
-
Grognouff -
Grognouff -
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
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 combobox en chaine avec VBA sous Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
- Ai suite 3 - Télécharger - Optimisation
- Chaine tnt gratuite sur mobile - Guide
3 réponses
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:
Bon courage
;o)
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)
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