Bonjour à toutes et à tous,
Je veux appliquer un filtre à un formulaire. J'ai pour cela une zone de texte "txtRecherche" dans l'entête du formulaire. Le filtre est créé et appliqué dans l'événement OnChange du champ txtRecherche en fonction des lettres entrées dans le champ et porte sur le champ
Ent. Le code de cette méthode est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| With Me
ICI :
.Repaint
...
strFiltre = "Ent Like '" & .txtRecherche.Text & "*'"
PREFERER :
strFiltre = "Ent Like """ & .txtRecherche.Text & "*"""
Pour le cas où tu aurais une apostrophe dans le nom de l'ent
.Filter = strFiltre
.FilterOn = True
End With |
Le problème est le suivant :
Si je rentre une lettre dans txtRecherche pour laquelle il existe des enregistrements dont le champ Ent commence par cette lettre, pas de problème, tout fonctionne bien. Lorsque j'efface cette lettre, tous les enregistrements redeviennent visibles. Jusque-là, c'est normal aussi.
Si je tape une lettre ne correspondant à aucun enregistrement, le formulaire n'affiche aucun enregistrement, ce qui est encore normal
Mais si je veux effacer cette lettre pour laquelle il n'y a pas d'enregistrement ou l'écraser par une lettre "fonctionnant", j'obtiens un message d'erreur d'exécution 2185 (et non 2815 comme je l'ai indiqué par erreur précédemment) disant : "Impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé."
Je précise que le contrôle txtRecherche a toujours le focus, ce qui est exigé par la propriété text. Sinon, ça ne fonctionnerait pas non plus avec les "bonnes" lettres.
J'ai pu établir que lorsque je tape une lettre pour laquelle il existe des enregistrements, la valeur de Me.txtRecherche,Text est la lettre que j'ai tapée et le type de la valeur est String, mais qu'en revanche, si je tape une lettre sans enregistrement correspondant, le contenu de Me.txtRecherche.Text devient "Impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé." et le type du contenu devient Integer. L'erreur se produit donc quand je veux appliquer le filtre sur un filtre ne renvoyant aucun enregistrement, mais c'est au "tour suivant", quand je veux spécifier une autre lettre dans mon champ de recherche/filtrage qu'elle se manifeste, par la boîte d'erreur.
Où est l'erreur? En quoi le fait de spécifier un filtre ne générant pas de résultat corrompt-il mon champ de recherche?
Merci d'avance
Philippe
Partager