Bonjour

J'ai un formulaire basé sur une requête "rqt_operations" et qui contient 2 champs indépendants (une zone de liste déroulante "champfiltre" basée sur une requête "rqt_zoneliste" qui liste les champs à filtrer et une zone de texte "textefiltre").

Dans la zone de liste déroulante, je choisis le champ sur lequel je souhaite filtrer mes enregistrements. Il est composé de "Date", "Type" et "Numdocument". Ensuite, je tape lettre par lettre la valeur dans le champ "textefiltre".

Le filtre fonctionne plus ou moins : j'ai un souci avec le Focus. Après avoir tapé la 1ère lettre dans le champ "textefiltre", le focus se met sur l'objet suivant suivant l'ordre de tabulation. Je suis contraint de replacer le focus dans le champ après la lettre que j'ai tapée.

Si vous pourriez m'aider à régler ce problème, çà serait vraiment sympa.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Form_Load()
Me.champfiltre.Value = "Date"
Me.textefiltre.SetFocus
End Sub
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
Private Sub textefiltre_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i As Integer
 
i = KeyCode
 
Select Case i
Case 8
If Len(lettres) = 1 Or Len(lettres) = 0 Then
lettres = ""
Else
lettres = Left(lettres, Len(lettres) - 1)
End If
GoTo filtrer
Case 37, 39
SendKeys "{END}"
Case 32, 48 To 57, 65 To 90, 97 To 122
lettres = lettres & Chr(i)
Me![textefiltre] = lettres
GoTo filtrer
End Select
 
Exit Sub
 
filtrer:
If Len(lettres) = 0 Then
Me.FilterOn = False
Else
Me.Filter = "[" & Me![champfiltre] & "]" & "like '" & lettres & "*'"
Me.FilterOn = True
End If
Me.OrderBy = "[" & Me!champfiltre & "] " & "ASC"
Me.OrderByOn = True
Me.textefiltre.SetFocus
SendKeys "{END}"
 
End Sub
rqt_operations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT tbl_operations.o_date AS [Date], tbl_operations.o_type AS Type, tbl_operations.o_nom AS Nom, tbl_operations.o_document AS Document, tbl_operations.o_numdocument AS [N° document], tbl_operations.o_libelle AS Libellé, tbl_operations.o_categorie AS Catégorie, tbl_operations.o_prixHTVA AS [Prix HTVA], tbl_operations.o_TVA AS TVA, [o_prixHTVA]+[o_TVA] AS [Prix TVAC], tbl_operations.o_description AS Description
FROM tbl_operations
ORDER BY tbl_operations.o_date, tbl_operations.o_type, tbl_operations.o_nom;
rqt_zoneliste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT tbl_operations.o_date AS [Date], tbl_operations.o_type AS Type, tbl_operations.o_numdocument AS [N° document]
FROM tbl_operations;