Sélectionner le bon item d'une ListBox après un tri des résultats

Axel19

XLDnaute Nouveau
Bonjour,
Je suis nouveau sur le forum, et après moult recherches à travers le web, je me décide à poster un sujet, car je n'ai pas trouvé de réponse à mon problème à ce jour.

J'ai un fichier, avec une unique feuille, avec une liste de livres, dans un ordre aléatoire.
J'ai créé un Userform, appelé par un bouton de commande, qui permet de rechercher un titre par mot-clé.
Ce mot-clé alimente la ListBox sur le formulaire.
Les cellules contenant le mot-clé se mettent en surbrillance sur la feuille.
En cliquant sur un élément de la liste, c'est la ligne qui est sélectionnée.

Tout cela fonctionne bien.
Grâce à tout ce que j'ai pu glaner, sur ce forum et ailleurs !

J'ai décidé ensuite d'intégrer le classement par ordre alphabétique de la liste, appelé par un bouton de commande sur le Userform.
Cela fonctionne.

Mais lorsque je clique sur un élément de la liste, mise par ordre alphabétique, c'est toujours la ligne de la liste précédente qui est sélectionnée.

Comment faire pour que l'élément sélectionné dans la ListBox pointe vers la bonne ligne ?

Est-ce un problème avec l'index ?
Je n'ai pas trouvé d'exemple de problème similaire, et j'avoue ne pas être assez calé et ne pas maitriser toute la syntaxe du VBA...

Je joins mon fichier, que j'ai réduit au plus simple en enlevant les fioritures :) .

Faites-le test avec le mot-clé : nuit
et vous verrez clairement ce qu'il se passe (ou avec le mot : vision, pour travailler sur deux lignes uniquement).

Merci d'avance à tous.
 

Pièces jointes

  • Test_A-Z_ListBox.xlsm
    34.3 KB · Affichages: 7
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Axel19,

Essayez ce code:
VB:
Private Sub ListBox1_Click()
Dim laligne
   laligne = Application.Match(ListBox1.List(ListBox1.ListIndex), Range("b1:b99999"), 0)
   Rows(laligne).Select
End Sub
 

Pièces jointes

  • Axel19- Test_A-Z_ListBox- v1.xlsm
    27.8 KB · Affichages: 13

Axel19

XLDnaute Nouveau
Bonjour Axel19,

Essayez ce code:
VB:
Private Sub ListBox1_Click()
Dim laligne
   laligne = Application.Match(ListBox1.List(ListBox1.ListIndex), Range("b1:b99999"), 0)
   Rows(laligne).Select
End Sub

Bonjour mapomme,

Ça fonctionne !
Vous êtes incroyable !
Je n'en reviens pas que deux lignes de code puissent solutionner le truc !

Je vais bricoler un peu pour comprendre comment ça marche. J'ai encore beaucoup à apprendre, mais je me régale !

Merci encore !! (Pour votre rapidité aussi).

A bientôt.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
289 676
Messages
1 902 006
Membres
173 307
dernier inscrit
takus
Haut Bas