Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Problème fonction de recherche et sélection d'item dans Listbox d'un Userform

Axel19

XLDnaute Nouveau
Bonjour,

J'ai un souci avec mon fichier de base de données avec fonction de recherche de mot dans un formulaire.

(Le fichier est épuré, je n'ai laissé qu'une trentaine de lignes. Ce sont ici des disques, j'ai la même chose pour des livres et autres, plusieurs centaines de lignes selon...)

Il s'agit d'une base de données avec des entrées par ligne.
Je précise que tout le code VBA est une fusion de ce que j'ai pu apprendre entre ici (et le site de boisgontier ), avec quelques astuces que j'ai pu intégrer selon mes besoins.
(J'ai trouvé d'autres exemples qui sont plus complexes que ce que je veux obtenir, pour l'instant j'en reste à ce fonctionnement).

1. Le premier problème qui se pose est le suivant :

Après avoir tapé un mot dans la Textbox1 "Nom", par exemple "Deep Purple", on obtient plusieurs résultats dans la Listbox1 (lorsqu'il y a plusieurs entrées avec le même nom bien sûr).
En cliquant sur un résultat de la liste, quel qu'il soit, c'est toujours le 1er qui est mis en surbrillance, au lieu de celui qui est choisi (le 4ème par exemple).
Un problème d'index ? Que je n'arrive pas à résoudre...
Même chose avec la recherche dans la Textbox2 "Titre" (essai avec "Moon" par exemple, le clic sur le 2ème résultat pointe sur le 1er lorsque le nom de la 1ère colonne est identique.).
(Et même problème en sélectionnant un nom via la liste déroulante).

2. Deuxième problème :

A partir de la TextBox4 "Rechercher dans le classeur", la recherche d'un mot dans tout le classeur fonctionne, mais lorsque l'on clique sur un résultat le code s'arrête sur "l'erreur d'exécution 13".
(Dans une version antérieure du fichier, l'erreur apparaissait seulement si l'on n'était pas sur la même feuille que l'item cliqué, mais je ne me souviens plus de ce que j'ai modifié sur cette version...)


Il ne doit pas manquer grand-chose pour que ça fonctionne.

Merci d'avance à ceux qui auraient une idée.
 

Pièces jointes

  • Disques_v.3.1.xlsm
    66.7 KB · Affichages: 27

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Axel,
( désolé, j'ai tellement bidouillé votre fichier qu'il ne serait pas "décent" que je vous le livre )

Je pense que comme vous concaténez Groupe - Titre, vous ne pouvez plus ensuite rechercher sur cet item car il n'existe pas.

Peut être une solution :
1- Concaténer N° Groupe Titre :
VB:
ListBox1.AddItem Format(c.Offset(0, -1), "000") & " - " & c & "   -   " & c.Offset(0, 1)
Ce qui donne par ex : 026 - Deep Purple - Child in time
Puis pour la recherche :
Code:
Numéro = Val(Left(ListBox1.List(ListBox1.ListIndex), 3))
laLigne = Application.Match(Numéro, Sheets("Disques").Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), 0)
On extrait le numéro qui est à gauche et on fait la recherche dessus.
 

Axel19

XLDnaute Nouveau
Bonsoir,

J'imagine dans quel état doit se trouver mon fichier

Avant que je massacre le mien, je voudrais être sûr d'insérer les lignes de code au bon endroit.

♫ "Sweet Child in time
You'll see the line" ♫ "Je vais voir la ligne" (Trop fort !)

- Pour le 1er point, dois-je la placer dans les Sub "TextBox1_Change" et "TextBox2_Change" ?

- Et pour le 2ème point, la recherche dans tout le classeur, dans la Sub "Recherche Classeur" ?

Dans les deux cas, j'ai comme l'impression qu'il faut que je revois une grande partie du code.

Dites-moi si je suis sur la bonne route.

J'attends le ricochet (♫ "Wait for the ricochet" ♫) (il fallait pas me titiller, "Child in Time" c'est mon morceau préféré ! )
 

Axel19

XLDnaute Nouveau
Bonjour,

Après plusieurs essais infructueux... Je suis de retour.

Je penses que je ne parviens pas à trouver le bon emplacement pour insérer le code...
Il doit y en avoir en enlever aussi...

Quelqu'un a-t-il testé ou a-t-il une idée ? Sylvanu ?
 

Discussions similaires

Réponses
16
Affichages
680
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…