Bonjour,
Dans un classeur, j’ai deux colonnes de données. Dans la première figurent une liste de noms, qui peuvent apparaître plusieurs fois chacun. Dans le seconde colonne, on retrouve des initiales correspondant à chaque entrée de la première colonne. Dans la première colonne, un nom apparaît plusieurs fois uniquement si plusieurs initiales lui sont affectées.
Via deux combobox, je cherche à générer deux listes « uniques »(dans le sens ou pas de doublons présents), la deuxième dépendant directement de la sélection faite dans la première. Concrètement, si dans cette première liste un nom est choisi, la seconde combobox donnant le choix des initiales, ne doit comporter que les initiales qui ne lui ont pas déjà été affectées.
Exemple :
John AAA
Bart BBB
Bart AAA
Jean CCC
Si John est sélectionné dans la combobox1, alors seuls BBB et CCC devront apparaître dans la combobox2.
Si Bart est sélectionné dans la combobox1, alors seul CCC devra apparaître dans la combobox2.
Si Jean est sélectionné dans la combobox1, alors seuls BBB et AAA devront apparaître dans la combobox2.
J'ai pour le moment mis ceci :
Seulement, ce code ne prend pas en compte le fait qu'un nom peut avoir plusieurs initiales qui lui ont été affectés... Savez-vous comment pallier le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Private Sub ComboBox1_Change() ComboBox2.Clear Dim ListeUniqueComboBox2 As New Collection On Error Resume Next For Each cell In Worksheets("Feuil1").Range("I11:I" & Worksheets("Feuil1").Range("I11").End(xlDown).Row) If cell <> Application.WorksheetFunction.VLookup(ComboBox1.Text, Sheets("Feuil1").Range("G11:I" & Worksheets("Feuil1").Range("G11").End(xlDown).Row), 3, False) Then ListeUniqueComboBox2.Add cell, CStr(cell) End If Next cell On Error GoTo 0 For i = 1 To ListeUniqueComboBox2.Count ComboBox2.AddItem ListeUniqueComboBox2.Item(i) Next i End Sub
Merci d'avance.
Partager