Liste déroulante conditionnelle

Liste déroulante conditionnelle - VB/VBA/VBS - Programmation

Marsh Posté le 24-05-2017 à 14:47:43    

Bonjour a tous  
Est ce quelequ'un pourrait m'aider à coder en VBA 3 Combobox liées
( la 2éme dépend de la 1ère et la 3ème dépend de la 2ème ) sachant que les combobox sont placés sur un Sheet et non un Userforme.
le remplissage des 3 combobox se fait à partir d'un tableau de 3 Colonnes : Region - Pays - Marque  
Combobox1 = Region
Combobox2 = Pays
Combobox3 = Marque
j'espere que j'étais claire dans ma question  
Merci de m'apporter votre aide j'en ai vraiment besoin et j'en serai très reconnaissant

Reply

Marsh Posté le 24-05-2017 à 14:47:43   

Reply

Marsh Posté le 14-06-2017 à 14:26:29    

Salut, j'ai du gèrer une situation similaire il y a pas longtemps pour une combobox avec des équipements puis une deuxième avec les sous-équipements.
 
Je sais pas comment ça pourrais marcher avec 3 entrées, mais voice la solution que j'avais trouvé a mon problème :
 
Mes équipements et sous équipements sont renseignés comme il suit dans une feuille excel "DATA":
Equipement 1 -> Equipement 2 -> Equipement 3 -> ...
Ss-Equip 1          Ss-Equip 1          Ss-Equip 1
Ss-Equip 2          Ss-Equip 2          ...
Ss-Equip 3          ...                      ...
 
Je crée la liste déroulante des équipements

Code :
  1. Private Sub UserForm_Initialize()
  2. 'Création de la liste déroulante des équipements
  3.     nb_equip = Worksheets("DATA" ).Range("B4" ).End(xlToRight).Column
  4.     selec_equip.Clear
  5.    
  6.         For i = 2 To nb_equip
  7.         nb_equip_nom = Worksheets("DATA" ).Cells(4, i).Value
  8.         selec_equip.AddItem nb_equip_nom
  9.         Next I
  10. End Sub


 
Ensuite, pour creer la deuxième liste voila le code qui se charge quand on clic sur la combobox des sous équipements:
 

Code :
  1. Private Sub selec_equip_Change()
  2.     nb_equip = Worksheets("DATA" ).Range("B4" ).End(xlToRight).Column
  3. 'Comptage du nombre d'equipements
  4.     equip = Range(Worksheets("DATA" ).Cells(4, 2), Worksheets("DATA" ).Cells(4, nb_equip)).Find(selec_equip.Value).Column
  5. 'On retrouve le numero de colonne de l'équipement selectioné dans la combobox équipement (selec_equip)
  6. 'Création de la liste déroulante des sous-équipements
  7.     nb_ss_equip = Worksheets("DATA" ).Cells(4, equip).End(xlDown).Row
  8. 'On compte le nombre de ss équipements rattaché a l'équipement
  9.     selec_ss_equip.Clear
  10. 'On nettoi la combobox des ss équipements, pour eviter l'accumulation
  11.    
  12.         For i = 5 To nb_ss_equip
  13.         nb_ss_equip_nom = Worksheets("DATA" ).Cells(i, equip).Value
  14.         selec_ss_equip.AddItem nb_ss_equip_nom
  15.         Next i
  16. 'On ajoute tout les ss équipements a la liste
  17. End Sub


 
Dans mon cas, un sous équipement peut être rattaché qu'a un seul équipement, je suis pas surs que ça soit aussi vrai dans ton cas, mais tu trouvera peut être l'inspiration dans ce bout de code.
 
Les bugs connus : plantage si il n'y a aucun équipement rentré, ou un équipement sans sous équipement, mais c'est normalement impossible.
 
Bon courage  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed