Inserer la fonction de recherche dans une textbox + saisie semi automatique des

arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007 - 12 déc. 2007 à 17:27
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 15 déc. 2007 à 13:59
Bonjour, afin de finaliser un projet et de le rendre agrèable à l'utlisateur, j'aimerai faire une textbox qui permette d'une part de selectionner les cellules les unes après les autres contenant le mot dans la textbox comme la fonction recherche, et si possible qu'il fasse une saisie semi-automatique, c'est à dire imaginon que sur notre plage nous avons Toto Titi Tipa, qu'il me propose Tipa lorsque j'ai écrit Tip.
Merci beaucoup et bonne soirée a vous.

7 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
12 déc. 2007 à 23:03
Dans l'événement KeyPress du textbox, il faudra que tu utilises la fonction Find pour trouver la première occurrence d'un mot commençant par le texte du textbox, en utilisant le paramètre xlPart

Mais ça risque de ralentir ton programme passablement, j'imagine...(?)

MPi²
0
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
13 déc. 2007 à 07:18
Salut,

Effectivement, ça va te ralentir ton programme, surtout si tu as plusieurs cellules
0
arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007
13 déc. 2007 à 10:47
Bonjour, j'ai essayé de faire la méthode, mais je n'y suis pas arrivé, auriez vous un exemple de code de la manière d'utiliser ces commandes svp?Merci beaucoup et bonne journée.
0
zener82 Messages postés 15 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 18 juillet 2021
13 déc. 2007 à 22:50
Pour la fonction recherche, il suffit d'utiliser la fonction .Find appliquée à un Range par exemple [exemple Range("A:A").Find(textbox.text, + options) ]. Cette fonction, tu peux la lancer lors de l'appui sur un bouton que tu places à coté.
J'ai déjà fait le test, ca marche bien, et ca se comporte exactement comme la fonction recherche d'Excel (Ctrl+F).

Pour la saisie semi-automatique, je pense également que ca risque d'etre trop lourd, car il va falloir balayer l'ensemble de tes cellules. Si ta plage de cellule de texte à rechercher n'est pas trop grande, c'est peut etre jouable...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 déc. 2007 à 01:12
Par contre, comme tu veux rechercher le début d'une chaîne, il vaudrait peut-être mieux passer par une recherche en boucle avec
For Each...Next

MPi²
0
zener82 Messages postés 15 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 18 juillet 2021
15 déc. 2007 à 11:32
J'ai pas bien compris pourquoi il vaut mieux utiliser la boucle For en cas de recherche de début de chaine...

De mon point de vue, et sauf erreur de ma part, il suffit d'indiquer dans les options de la fonction "Find" la propriété xlPart (au lieu de xlWhole) afin de faire la recherche sur une partie de la cellule seulement... Ainsi, le range devrait pouvoir fonctionner, et est beaucoup plus rapide que toute boucle dans la feuille excel.

Me trompje ?
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
15 déc. 2007 à 13:59
Salut Zener,
C'est vrai que Find est plus rapide, en principe. C'est pourquoi je le lui avais suggéré. Et je l'utilise régulièrement.

Par contre, si tu recherches "tati", Find pourrait trouver "Patati"
qui n'est pas nécessairement ce qu'on veut trouver... Il faudrait alors refaire une recherche avec FindNext ...

Dans un cas comme dans l'autre (Find ou For Each...Next), ça prendra une vérification des 2 mots avec Left. Alors, difficile de dire laquelle des méthodes sera la plus rapide. Il faudrait faire le test sur des milliers de recherches... J'ai déjà fait des tests avec boucles et Find (avec Mortalino dont on n'entend plus parler...?) et ses boucles étaient plus rapides que mes Find... allez savoir (?)

Et on en revient à la lenteur du programme suite à chaque touche vérifiée.

Finalement, le mieux serait peut-être de charger toutes les valeurs de la colonne dans un tableau, le trier et boucler celui-ci (?) Encore là, ça prendrait des tests...

MPi²
0
Rejoignez-nous