Salut a tous !
Nouveau weekend, nouvelle question
D'abord je m'excuse, je suis sur clavier QWERTY et n'ai donc pas les accents.
Alors voila je dispose d'un classeur Excel avec en colonne A les clients, et en colonne B les mots cles lies a ces clients.
Cela signifie qu'en colonne A, un meme client peut apparaitre plusieurs fois mais avec un mot cle different en colonne B.
J'aimerai creer un userform avec une ComboBox qui me liste les clients en A sans doublons, et une ListBox qui repertorie tous les mots cles relies au client selectionne avec la ComboBox.
Mon userform est deja cree, je sais comment remplir ma ComboBox avec les clients sans les doublons en utilisant un dictionnaire, mais je n'arrive pas a lier les mots cles de chaque clients dans ma ListBox.
Je sais le faire lorsqu'il n'y a qu'une ligne par client et que tous les mots cles sont listes par colonnes.
Mon code :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Private Sub UserForm_Initialize() Dim wb As Workbook, sh As Worksheet, i As Long Set wb = ThisWorkbook Set sh = Sheet1 i = sh.Range("A" & Rows.Count).End(xlUp).row For x = 2 To i If IsError(sh.Range("A" & x)) Then sh.Range("A" & x) = "N/A" Next x Me.ComboBox1.Clear Call FillCombo(ComboBox1, sh.Range("A2:A" & i)) End Sub Sub FillCombo(combo As ComboBox, rg As Range) Dim dict As Object, C As Range, Item As String Set dict = CreateObject("Scripting.Dictionary") For Each C In rg Item = Trim(C.Value) If dict.Exists(Item) = False Then dict.Add Item, 1 combo.AddItem Item End If Next Set dict = Nothing End Sub Private Sub ComboBox1_Change() FillKeywordsList ComboBox1.ListIndex End Sub Sub FillKeywordsList(ByVal row As Long) Dim rg As Range Set rg = Sheet1.Range("B2:H2").Offset(row) ListBox1.Clear ListBox1.List = WorksheetFunction.Transpose(rg) End Sub
Au lieu de tenter d'expliquer par les mots, je vous mets en piece jointe un exemple.
Le but est donc de faire fonctionner mon code avec les valeurs telles qu'elles sont presentees dans l'onglet "fonctionne pas".
Tant que j'y suis, y a t-il un moyen de trier les valeurs de la ComboBox ? De la ListBox ? Par ordre alphabetique.
Merci infiniment pour votre aide precieuse![]()
Partager