Bonjour,
Je suis en train de réaliser un formulaire de recherche
L'idée c'est que l'utilisateur, en tapant quelques lettres dans une ComboBox, excel lui envois toutes les solutions qui ont déjà été mises sur la page.
J'ai trouvé du code sur Internet qui marche bien.
En revanche, en tapant quelques lettres on peut voir des propositions, mais en cliquant sur une proposition : celle-ci ne s'affiche pas sur la ComboBox.
Comment puis-je résoudre cela ? Quel évènement est associé au click dans le menu déroulant ?
Merci
Voici le code que j'ai trouvé :
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
48
49
50
51
52
53
54
55
56
57
58
59 Private Sub ComboBox1_Change() 'Concerne la liste des Sociétaires pour chargement ou enregistrement > GRC 'Mettre la Combobox en majuscule ComboBox1.Text = UCase(ComboBox1.Text) 'Code pour maintenir la liste "restreinte" au fur et à mesure de la saisie du nom dans la combobox1 SendKeys "{DEL}" 'Appel de la liste des noms à utiliser dans la combobox1 définitNomGlobal 'Tier la liste apparaissant dans la combobox1 et sans doublons Dim d1 Dim tmp As String Dim C As Range Dim tbl As Variant 'déclare la variable tbl (TaBLeau) Dim z As Integer 'déclare la variable z (incrément) Dim j As Integer 'déclare la variable j (incrément) Dim temp As Variant 'déclare la variable temp (valeur TEMPoraire) If Me.ComboBox1 <> "" Then Set d1 = CreateObject("Scripting.Dictionary") tmp = UCase(Me.ComboBox1) & "*" For Each C In [listeLJ] If UCase(C) Like tmp Then d1(C.Value) = "" Next C tbl = d1.keys 'définit le tableau des valeurs sans doublons 'tri alphabétique For z = 0 To UBound(tbl) 'boucle 1 de 0 au nombre de valeur du tableau For j = 0 To UBound(tbl) 'boucle 2 de 0 au nombre de valeur du tableau If tbl(z) < tbl(j) Then 'condition : si la valeur de la boucle 1 est invérieure à la valeur de la boucle 2 temp = tbl(z) 'définit la valeur temporaire temp tbl(z) = tbl(j) 'la valeur de la boucle un devient la valeur de la boucle 2 tbl(j) = temp 'la valeur de la boucle deux devient la valeur temporaire temp End If 'fin de la condition Next j 'prochaine valeur de la boucle 2 Next z 'prochaine valeur de la boucle 1 Me.ComboBox1.List = tbl Me.ComboBox1.DropDown End If End Sub Sub définitNomGlobal() ' Code utilisé pour la combobox1 > ' Sert à définir le nom du champ sélectionné dans la feuille "LJ" Dim derniereLigne As Long derniereLigne = Range("A" & Rows.Count).End(xlUp).Row Range("A2:A" & derniereLigne).Name = "listeLJ" End Sub
Partager