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