Colonne et combobox sur un excel de myDearFriend! |
Titre du sujet : Colonne et combobox sur un excel de myDearFriend! par biablo le 29/05/2012 22:01:47 Bonsoir, Je tiens d'abord à vous remercier car aprs qq semaine de recherches et différentes programmations je suis tombé sur un fichier " Comboencascade.xls" qui m'a enlever une belle épine du pied. Je recherchais le moyen d'avoir des listes en cascades en tenant compte du choix précédent. Maintenant c'est chose faite mais ayant d'un coté une triple liste et d'un autre un double liste où les choses se compliquent : le premier choix fonctionne parfaitement mais pas le second car les données de base se trouve 2 colonnes à droite et la combobox prend la colonne à droite. le triplicat prend combobox 1, 2 et 3 avec les colonnes A B C le doublet CBXprojet et cbxlot avec les colonne B et D mon problème se situe au niveau des commentaires "test" et "end test" Ci joint mon code : private Sub UserForm_Initialize() ' triple listes en cascade Dim L As Long 'Mémoriser le tableau de données avec une colonne supplémentaire qui servira à la 'gestion des niveaux d'alimentation des combobox With Sheets(suivicapa) L = .Range("A65536").End(xlUp).Row TabTemp = .Range(.Cells(1, 1), .Cells(L, 5)).Value End With MAJCombo ComboBox1, 0 MAJCombo Cbxprojet, 0 MAJCombo Cbxlot, 0 MAJCombo cbxpilote2, 0 MAJCombo cbxpilote, 0 Cbxpilote.RowSource = "listes!pilote" 'genere liste pilote Cbxpilote.ListIndex = -1 cbxpilote2.RowSource = "listes!pilote" 'genere liste pilote cbxpilote2.ListIndex = -1 End Sub Private Sub ComboBox1_Change() Dim L As Long 'Remise à zéro des niveaux For L = 1 To UBound(TabTemp, 1) TabTemp(L, 5) = 0 Next L 'MAJ du combo n°2 avec un flag de niveau 1 MAJCombo ComboBox2, 1, ComboBox1.Text 'RAZ des combo suivantes ComboBox3.Clear End Sub Private Sub ComboBox2_Change() 'MAJ du combo n°3 avec un flag de niveau 2 MAJCombo ComboBox3, 2, ComboBox2.Text End Sub 'test Private Sub Cbxprojet_Change() Dim L As Long 'Remise à zéro des niveaux For L = 1 To UBound(TabTemp, 1) TabTemp(L, 5) = 0 Next L 'MAJ du combo n°2 avec un flag de niveau 1 MAJCombo Cbxlot, 1, Cbxprojet.Text ' end test End Sub Private Sub MAJCombo(Combo As ComboBox, Niv As Byte, Optional V As String) Dim Coll As New Collection Dim L As Long 'Gestion du flag de niveau dans la colonne supplémentaire (5) du tableau For L = 1 To UBound(TabTemp, 1) If Niv = 0 Then 'RAZ du flag de niveau TabTemp(L, 5) = 0 Else TabTemp(L, 5) = Application.WorksheetFunction.Min(TabTemp(L, 5), Niv - 1) 'Si l'élément est retenu alors on incrémente le flag de niveau If TabTemp(L, Niv) = V Then TabTemp(L, 5) = TabTemp(L, 5) + 1 End If End If Next L 'Détermination de la liste sans doublon On Error Resume Next For L = 1 To UBound(TabTemp, 1) If TabTemp(L, 5) = Niv Then Coll.Add TabTemp(L, Niv + 1), CStr(TabTemp(L, Niv + 1)) End If Next L On Error GoTo 0 'Mise à jour du combobox Combo.Clear For L = 1 To Coll.Count Combo.AddItem Coll.Item(L) Next L End Sub Pouvez vous m'indiquer comment pouvoir filtrer mais avec 1 autre colonne d'écart merci d'avance bonne soirée |
Forums