XL 2016 RESOLU Saisie intuitive TextBox vers ListBox

jorge1201

XLDnaute Occasionnel
Supporter XLD
Bonjour le forum,
Pour la gestion de membres d'une association (environ 1200 membres), j'ai adapté une base de données créé par Philippe Tulliez en 2014 (merci à lu) et que fonctionne parfaitement. J'ai remplacé le ComboBox original de recherche par un ListBox car je trouve que la lisibilité des données est meilleure et ajouté un TextBox.

Maintenant, pour faciliter davantage la recherche, j'aimerais incorporer un code dans le nouveau TextBox (TextBox1_Change) qui permettrait une saisie intuitive, c'est-à-dire, qu'en saisissant quelques lettres dans le TextBox la liste de noms et prénoms contenue dans le ListBox soit réduite aux occurrences pertinentes. Cette recherche intuitive devrait se faire sur les deux colonnes du ListBox : nom et prénom.

De l'énorme quantité d'occurrences que apparaissent sur le net en tapant "recherche intuitive" ou "saisie intuitive", je n'ai trouvé, après moultes recherches, que 5 ou 6 codes qui fonctionnent. Beaucoup de ces discussions ont été laissées à l'abandon et certaines d'autres traitent carrément des sujets sans aucun lien avec le titre annoncé. Pour finir, il n'y a pas tant que ça.

Le première problème c'est qu'en essayant d'adapter les codes trouvés j'obtiens systématiquement de messages d'erreur ("accès refusé", "ne fait pas partie de la bibliothèque", "erreur non répertoriée", etc). Je pense qu'il se produit une incompatibilité entre l'Index du ListBox1 et celui du code que j'essaye d'incorporer. Le deuxième problème est que je ne sais pas faire.

Alors, pour celles et/ou ceux qui se donneront la peine de pencher sur mon problème, un grand merci. En pièce jointe un extrait de ma base.
Bon soirée. Jorge
 

Pièces jointes

  • Contacts_V1.xlsm
    46.3 KB · Affichages: 22
Solution
Bonjour le fil, le forum

Que signifie reprendre le code? Tout réécrire toute la base?
Non, simplement ne plus utiliser de rowsource pour la listbox mais un tableau.
Je suis toujours intéressé par votre proposition.
J'ai adapté votre programme, en pièce jointe, deux textbox, une pour le nom, une pour le prénom, les filtres sont interactifs et cumulables, je n'ai repris que la listbox et je n'ai pas refait le reste du programme mais on pourrait effectivement l'améliorer en utilisant des tableaux structurés, j'ai ajouté quelques données pour les tests, à vous d'en mettre des plus fournies et différenciées pour vos tests en réel.
Pour la petite histoire, j'ai moi même travaillé pendant des années avec des bases de plusieurs...
Bonjour jorge1201, fanfan38, le forum

J'avais fait cela sur ce fichier avec des filtres en textbox interactifs, il faut lancer lancer l'Usf Facture
https://www.excel-downloads.com/threads/vba-format-date-et-n-0-automatique.20054295/post-20419087

le même avec une listbox et des combobox pour les filtres, c'est sympa aussi
https://www.excel-downloads.com/threads/vba-format-date-et-n-0-automatique.20054295/post-20419870

Pas le temps de reprendre ton fichier aujourd'hui, je repasserai plus tard.

Bien cordialement, @+
 

jorge1201

XLDnaute Occasionnel
Supporter XLD
Bonjour jorge1201, fanfan38, le forum

J'avais fait cela sur ce fichier avec des filtres en textbox interactifs, il faut lancer lancer l'Usf Facture
https://www.excel-downloads.com/threads/vba-format-date-et-n-0-automatique.20054295/post-20419087

le même avec une listbox et des combobox pour les filtres, c'est sympa aussi
https://www.excel-downloads.com/threads/vba-format-date-et-n-0-automatique.20054295/post-20419870

Pas le temps de reprendre ton fichier aujourd'hui, je repasserai plus tard.

Bien cordialement, @+
 

jorge1201

XLDnaute Occasionnel
Supporter XLD
Re
J'ai testé, sans trop grand succès, la solution de fanfan38. Bien que le code fait son travail (saisie intuitive), il entre cependant en conflit avec les autres procédures de la base.

En effet, l'erreur 380 de Microsoft Visual Basic apparaît à chaque fois que l'on veut soit enregistrer ou modifier un enregistrement soit utiliser les boutons de navigation.

L'erreur indiqué : "Impossible de définir la propriété ListIndex. Valeur de la propriété non valide." et le code surligné : Me.ListBox1.ListIndex = CurrentRecord. C'était la même erreur que je rencontrais lors de mes tests.

Dans le cas d'une modification, en cliquant sur le bouton valider, la dite erreur apparaît mais après avoir cliqué sur Débogage, la ligne s'inscrit quand-même dans la base mais au lieu de modifier la ligne sélectionnée, une nouvelle est créée et trois lignes plus bas que la dernière de la base.

De plus, serait-il possible de faire en sorte que la liste soit visible dans la ListBox dès l'activation de l'UserForm et qu'elle le reste tant que le formulaire soit ouvert?

Le modèle proposé par Yeahou semble intéressant mais de là à que je puisse l'adapter ...

Merci encore pour votre disponibilité. Bonne après-midi. Jorge.
 

jorge1201

XLDnaute Occasionnel
Supporter XLD
Re fanfan38, Yeahou, le forum,

fanfan38 : il me faut un peu de temps pour regarder le modèle que tu proposes. et étudier (bien trop grand mot) son code. J'ai regardé un peu mais les messages d'erreur empêchent d'apprécier le fonctionnement. Le TextBox fait bien son travail de recherche dans la liste du ListBox. Je regarde ce soir et reviendrais vers toi demain dans la journée. Dans tous les cas, il y a pas mal de code à potasser là-dedans. Merci encore.

Yeahou : merci pour ta proposition, personnellement je préfère le TextBox.
 

patricktoulon

XLDnaute Barbatruc
bonsoir
perso

je transforme se range en tableau structuré
je me sert de la colonne 1 qui n'est pas utilisé ou j'en rajoute une a la fin avec le concat nom prenom
et a chaque changement je filtre (autofilter ) sur cette colonne
je récupère les specialcells visible dans une variable tableau et je ré alimente la liste box avec
c'est simple propre et ya pas de tour de passe avec je ne sais quoi
simple a metre en place 15 lignes de code max
ça ira toujours plus vite que toute les méthodes que je connais a ce jour
A mediter
regarde ce lin
 

jorge1201

XLDnaute Occasionnel
Supporter XLD
Re,

Je viens de regarder votre fichier, il utilise encore des rowsources et il vaudrait mieux reprendre le code. Ma foi, puisque ce que Patricktoulon propose vous convient, je vais le laisser faire, je ne manque pas d'occupation par ailleurs.

Bonne continuation
Bien cordialement, @+
Il me semble qu'il y a un malentendu. A ma connaissance, patricktoulon ne m'a rien proposé. Il semblerait que ce message ne m'était pas adressé. Je suis toujours intéressé par votre proposition.

Que signifie reprendre le code? Tout réécrire toute la base?