bonjour à tous,
j'ai une liste à filter en fonction de la valeur d'un champs indépendant, actuellement j'ai un bouton ok, je clique et la liste est filtrée sans problème. J'ai vu sur un autre logiciel que dans le champ de recherche, dès qu'on commence à taper la lettre "a" par exemple la liste affiche les clients qu'ont le nom commence par a, et si on ajout le lettre "b" la liste affiche les clients qu'ont le nom commence par "ab" etc, tous ça sans cliquer sur le bouton ok. Est-il possible de faire ça avec Access??
merci pour votre aide
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour
Oui, c'est possible.
En supposant que tu as en entête ou au pied du formulaire un champs nommé txtSaisi. Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer) Static Chaine As String Chaine = Chaine + Chr(KeyCode) ' on regarde si l'utilisateur a appuyé sur BackSpace ' et on teste le nb de caractères de chaine pour effacer ' le dernier caractère If KeyCode = 8 And Len(Chaine) >= 2 Then Chaine = Left(Chaine, Len(Chaine) - 2) ElseIf KeyCode = 8 Then Chaine = Left(Chaine, Len(Chaine) - 1) End If ' Si la chaine est vide ou si on a effacé avec Del ' on supprime le filtre et on réinitialise les variables If Len(Chaine) = 0 Or KeyCode = 0 Then Me.FilterOn = False txtsaisi = "" Chaine = "" Exit Sub End If KeyCode = 0 ' on affiche pas le caractère tapé ' On filtre Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine & "*'" Me.FilterOn = True ' on affiche les caractères saisis txtsaisi.Value = LCase(Chaine) ' on se positionne à la fin du champ txtsaisi If Len(txtsaisi) > 0 Then txtsaisi.SelStart = Len(txtsaisi) End If End Sub
Pour supprimer le filtrage, 2 possibilités : Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le filtre.
En supposant que tu as en entête ou au pied du formulaire un champs nommé
txtSaisi.
Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer)
Static Chaine As String
Chaine = Chaine + Chr(KeyCode)
' on regarde si l'utilisateur a appuyé sur BackSpace
' et on teste le nb de caractères de chaine pour effacer
' le dernier caractère
If KeyCode = 8 And Len(Chaine) >= 2 Then
Chaine = Left(Chaine, Len(Chaine) - 2)
ElseIf KeyCode = 8 Then
Chaine = Left(Chaine, Len(Chaine) - 1)
End If
' Si la chaine est vide ou si on a effacé avec Del
' on supprime le filtre et on réinitialise les variables
If Len(Chaine) = 0 Or KeyCode = 0 Then
Me.FilterOn = False
txtsaisi = ""
Chaine = ""
Exit Sub
End If
KeyCode = 0 ' on affiche pas le caractère tapé
' On filtre
Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine &
"*'"
Me.FilterOn = True
' on affiche les caractères saisis
txtsaisi.Value = LCase(Chaine)
' on se positionne à la fin du champ txtsaisi
If Len(txtsaisi) > 0 Then
txtsaisi.SelStart = Len(txtsaisi)
End If
End Sub
Pour supprimer le filtrage, 2 possibilités :
Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le
filtre.
En supposant que tu as en entête ou au pied du formulaire un champs nommé txtSaisi. Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer) Static Chaine As String Chaine = Chaine + Chr(KeyCode) ' on regarde si l'utilisateur a appuyé sur BackSpace ' et on teste le nb de caractères de chaine pour effacer ' le dernier caractère If KeyCode = 8 And Len(Chaine) >= 2 Then Chaine = Left(Chaine, Len(Chaine) - 2) ElseIf KeyCode = 8 Then Chaine = Left(Chaine, Len(Chaine) - 1) End If ' Si la chaine est vide ou si on a effacé avec Del ' on supprime le filtre et on réinitialise les variables If Len(Chaine) = 0 Or KeyCode = 0 Then Me.FilterOn = False txtsaisi = "" Chaine = "" Exit Sub End If KeyCode = 0 ' on affiche pas le caractère tapé ' On filtre Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine & "*'" Me.FilterOn = True ' on affiche les caractères saisis txtsaisi.Value = LCase(Chaine) ' on se positionne à la fin du champ txtsaisi If Len(txtsaisi) > 0 Then txtsaisi.SelStart = Len(txtsaisi) End If End Sub
Pour supprimer le filtrage, 2 possibilités : Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le filtre.
En supposant que tu as en entête ou au pied du formulaire un champs nommé txtSaisi. Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer) Static Chaine As String Chaine = Chaine + Chr(KeyCode) ' on regarde si l'utilisateur a appuyé sur BackSpace ' et on teste le nb de caractères de chaine pour effacer ' le dernier caractère If KeyCode = 8 And Len(Chaine) >= 2 Then Chaine = Left(Chaine, Len(Chaine) - 2) ElseIf KeyCode = 8 Then Chaine = Left(Chaine, Len(Chaine) - 1) End If ' Si la chaine est vide ou si on a effacé avec Del ' on supprime le filtre et on réinitialise les variables If Len(Chaine) = 0 Or KeyCode = 0 Then Me.FilterOn = False txtsaisi = "" Chaine = "" Exit Sub End If KeyCode = 0 ' on affiche pas le caractère tapé ' On filtre Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine & "*'" Me.FilterOn = True ' on affiche les caractères saisis txtsaisi.Value = LCase(Chaine) ' on se positionne à la fin du champ txtsaisi If Len(txtsaisi) > 0 Then txtsaisi.SelStart = Len(txtsaisi) End If End Sub
Pour supprimer le filtrage, 2 possibilités : Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le filtre.
En supposant que tu as en entête ou au pied du formulaire un champs nommé
txtSaisi.
Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer)
Static Chaine As String
Chaine = Chaine + Chr(KeyCode)
' on regarde si l'utilisateur a appuyé sur BackSpace
' et on teste le nb de caractères de chaine pour effacer
' le dernier caractère
If KeyCode = 8 And Len(Chaine) >= 2 Then
Chaine = Left(Chaine, Len(Chaine) - 2)
ElseIf KeyCode = 8 Then
Chaine = Left(Chaine, Len(Chaine) - 1)
End If
' Si la chaine est vide ou si on a effacé avec Del
' on supprime le filtre et on réinitialise les variables
If Len(Chaine) = 0 Or KeyCode = 0 Then
Me.FilterOn = False
txtsaisi = ""
Chaine = ""
Exit Sub
End If
KeyCode = 0 ' on affiche pas le caractère tapé
' On filtre
Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine &
"*'"
Me.FilterOn = True
' on affiche les caractères saisis
txtsaisi.Value = LCase(Chaine)
' on se positionne à la fin du champ txtsaisi
If Len(txtsaisi) > 0 Then
txtsaisi.SelStart = Len(txtsaisi)
End If
End Sub
Pour supprimer le filtrage, 2 possibilités :
Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le
filtre.
En supposant que tu as en entête ou au pied du formulaire un champs nommé txtSaisi. Sur l'évènement Touche Appuyée de ce champs txtSaisi:
Private Sub txtsaisi_KeyDown(KeyCode As Integer, Shift As Integer) Static Chaine As String Chaine = Chaine + Chr(KeyCode) ' on regarde si l'utilisateur a appuyé sur BackSpace ' et on teste le nb de caractères de chaine pour effacer ' le dernier caractère If KeyCode = 8 And Len(Chaine) >= 2 Then Chaine = Left(Chaine, Len(Chaine) - 2) ElseIf KeyCode = 8 Then Chaine = Left(Chaine, Len(Chaine) - 1) End If ' Si la chaine est vide ou si on a effacé avec Del ' on supprime le filtre et on réinitialise les variables If Len(Chaine) = 0 Or KeyCode = 0 Then Me.FilterOn = False txtsaisi = "" Chaine = "" Exit Sub End If KeyCode = 0 ' on affiche pas le caractère tapé ' On filtre Me.Filter = "[NomDuChampServantDeCritèreDeFiltre] like '" & Chaine & "*'" Me.FilterOn = True ' on affiche les caractères saisis txtsaisi.Value = LCase(Chaine) ' on se positionne à la fin du champ txtsaisi If Len(txtsaisi) > 0 Then txtsaisi.SelStart = Len(txtsaisi) End If End Sub
Pour supprimer le filtrage, 2 possibilités : Effacer le contenu de txtSaisi avec Del ou mettre un bouton annulant le filtre.