XL 2019 Tri multi niveaux dans une Listbox

Axel19

XLDnaute Nouveau
Bonjour à tous,

Me voilà de retour avec mon fichier de recherche et de tri de livres (je pensais en avoir terminé :) )
Je vais avoir plus de temps à passer sur le forum... Comme tout ceux qui devront rester à la maison...

Je me suis aperçu d'un fonctionnement erratique sur la recherche par auteur (TextBox2).
Ex. 1 : lorsque le titre contient un numéro (ex. de recherche avec "Herbert", ou "Hodgson"), en déclenchant le tri, le 2 se retrouve avant le 1).
Encore plus bizarre, avec la recherche sur "Finné", outre les numéros, les titres ne sont pas dans l'ordre.
Ex. 2 : avec la recherche sur "collectif", il n'y a effectivement pas d'ordre alphabétique dans la colonne 2.

C'est normal me direz-vous. :)

Je suppose qu'il faille demander un tri multi colonnes mais de type multi-niveaux comme il existe de base dans Excel (tri alphabétique de la colonne A, puis de la colonne B, en conservant le tri précédant bien sûr).
L'objectif est d'avoir le nom de l'auteur dans une colonne, et les titres rangés par ordre alphabétique dans l'autre colonne)

(N.B. : par contre avec une recherche sur "Flanders", cela fonctionne (?) Bizarre... )

J'ai essayé quelques trucs sans succès.

Merci d'avance pour vos retours.

(Je parie sur mapomme :) que je salue).
 

Pièces jointes

  • Livres_Test_OK_17-03-2020.xlsm
    35.4 KB · Affichages: 15

Bebere

XLDnaute Barbatruc
bonsoir
changé la ligne avec like
Private Sub TextBox2_Change()
Dim cpt As Integer
Application.ScreenUpdating = False
Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row).Interior.ColorIndex = xlColorIndexNone 'définit la couleur de fond des cellules à 'Aucun remplissage'
ListBox1.Clear
If TextBox2 <> "" Then
For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Left(Cells(ligne, 3), Len(TextBox2)) = TextBox2 Then 'içi
Cells(ligne, 3).Interior.ColorIndex = 34
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = Cells(ligne, 3)
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(ligne, 2)
'ListBox1.List(cpt, 2) = ligne
' cpt = cpt + 1
End If
Next
End If
End Sub
 

Axel19

XLDnaute Nouveau
Bonjour.

@BOISGONTIER
Merci pour votre retour. J'avais écumé votre site sans tomber sur ceux-là. :)
Ils sont très complets (avec plein d'options auxquelles je n'avais pas songé, peut-être trop pour moi :) ).

Je vais étudier votre code et tenter de l'adapter selon mes besoins.

(@Bebere : j'ai essayé votre modification, sans voir de changement).

Prenez soin de vous.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi