Bonjour à tous,

Le contexte :

1 - J'utilise une liste déroulante non modifiable nommée CB_RCH_CMX (en pied de formulaire) qui me permet de sélectionner une valeur pour filtrer ensuite le recordset courant sur cette valeur (i.e. récupérer et afficher les lignes correspondantes de la valeur choisie).

2 - Précision : ma liste déroulante comporte également une première ligne vide qui lorsque je la sélectionne permet de supprimer le filtre courant donc d'afficher le recordset en entier (toutes les lignes).

Tout cela marche très bien mais maintenant, je souhaiterai pouvoir saisir qu'une partie de la valeur (du style 'Toto*') dans la combobox pour filtrer les lignes qui commencent par...

J'ai donc mis en place le code suivant :
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
 
Private Sub CB_RCH_CMX_NotInList(NewData As String, Response As Integer)
  vsNewData = NewData
  Response = acDataErrContinue
  Exit Sub
End Sub
 
Private Sub CB_RCH_CMX_AfterUpdate()
  If Nz(vsNewData, "") <> "" Then
    ' On a saisi une partie de la valeur : 'toto*' ou '*toto*' ou '*toto'
    Me.Filter = "EQP_C_CMX like " & Chr(34) & vsNewData & Chr(34)
    Me.FilterOn = True
    vsNewData = vbNullString
  Else
    ' Pour le cas où on a sélectionné directement une valeur dans la liste
    If Me.CB_RCH_CMX > 0 Then
      Me.Filter = "EQP_NUM = " & Str(Nz(Me.CB_RCH_CMX, 0))
      Me.FilterOn = True
    Else
      Me.FilterOn = False
    End If
  End If
End Sub
Mon Problème :

Lorsque après avoir saisi 'Toto*' dans la combobox et validé, la liste se déroule automatiquement et semble attendre que je sélectionne une valeur dans la liste déroulante.
Si je sélectionne la ligne vide (première de la liste) le filtre s'applique correctement et les lignes commençant par 'Toto' s'affichent toutes. Exactement ce que je veux obtenir.

Mais voilà, après la validation de la saisie de la chaine 'Toto*' je reste bloqué sur la liste déroulée et là çà va pas ! Dés la validation, le filtre devrait s'exécuter automatiquement ...

Pouvez-vous SVP m'aider à résoudre ce problème ?

D'avance MERCI de vos réponses
Cordialement
oracle7556