Colonne et combobox sur un excel de myDearFriend! | ||
---|---|---|
Inscription: 29/05/2012
Messages:
1
Système d'exploitation: PC Version Excel utilisée: OFFICE 2003 |
Posté le : 29-05-2012 22h01
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 |
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
1 Utilisateur(s) anonymes