Trier dans un ordre croissant une List View

Bonjour, je suis toujours sur le même tableur, j'explique pour les absents :

alors la j'aimerai trier une listView

L'utilisateur vient cherche un type de métal et quand il recherche ça lui montre tous les résultats possibles présents dans la base de donnée.

Maintenant j'ai rentré le code suivant pour que lorsque l'utilisateur vienne cliquer sur la colonne celle ci fasse un tri par ordre croissant un autre clic et c'est un tri décroissant.

Voici le code :

Private Sub ListViewRECHERCHE_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

With ListViewRECHERCHE

.Sorted = False

.SortKey = ColumnHeader.Index - 1

If .SortOrder = lvwAscending Then

.SortOrder = lvwDescending

Else

.SortOrder = lvwAscending

End If

.Sorted = True

End With

End Sub

Le souci que j'ai maintenant c'est que le tri s'effectue dans cet ordre :

10

1000

121

50

alors que je préférais 10-50-121-1000

Merci de votre aide !

Bonjour,

Ce résultat étrange s'explique ... car ...

Ta ListView contient du Texte ...

et pas des Nombres ...

Donc ... il te faut intervenir en amont ... au moment tu l'alimentes ...

Bonjour a toi,

Alors j'ai j'ai changé du coup les types de variable en nombre sous l'onglet accueil de standard en nombre mais rien ne change...

Merci

Re,

Je ne sais pas si je me suis exprimé assez clairement ...

Au moment de la création de ta ListView ... tu as créé une procédure pour qu'elle soit alimentée par les données de ta feuille...

C'est à ce moment là que tu dois intervenir ...

J'espère que cette explication est assez claire ...

Bonjour, je suis désolé mais je n'ai pas vu ce point dans mon cours d'info....

Private Sub CommandButtonRECHERCHER_Click()

Dim ws As Worksheet

Dim Orng As Range

Dim i, li As Integer

Dim j As Integer

Dim l, lmax As Integer

Dim col, cmax As Integer

Dim txt1, txt2 As String

' -- Initialisation des variables

Set ws = ThisWorkbook.Sheets("Stock") 'Nom de l'onglet contenant nos données:

Set Orng = ws.Cells(1, 1)

lmax = 1

Do Until IsEmpty(Orng.Offset(lmax, 0))

lmax = lmax + 1

Loop

cmax = 1

Do Until IsEmpty(Orng.Offset(0, cmax))

cmax = cmax + 1

Loop

'Notre cellule de référence de notre tableau

' -- Construction du tableau

'With UsfSearch2.ListViewRECHERCHE 'Nous travaillons avec notre Listview "lvPieces" dans notre userform

' -- Ajout des colonnes

UsfSearch2.ListViewRECHERCHE.ColumnHeaders.Clear ' Effacer les entêtes existantes

UsfSearch2.ListViewRECHERCHE.ListItems.Clear

' -- Spécifier l'affichage du Listview en mode "Détails"

UsfSearch2.ListViewRECHERCHE.View = lvwReport

'on boucle sur les éléments tant qu'on ne trouve pas de lignes vides

i = 0

li = 1

Do Until i = cmax

'Ajouter une colonne en spécifiant :

' une clé d'identification (Key) (situé 1 ligne au-dessus de notre tableau)

' une description

' une largeur (basé sur la largeur de la colonne dans notre classeur)

'les titres sont sur la même ligne que notre référence (rg)

'.ColumnHeaders.Add , rg.Offset(-1, i), rg.Offset(0, i), rg.Offset(0, i).Width

UsfSearch2.ListViewRECHERCHE.ColumnHeaders.Add , , Orng.Offset(0, i), Orng.Offset(0, i).Width

i = i + 1

Loop

i = 0

For l = 1 To lmax

For col = 1 To cmax + 1

txt1 = Orng.Offset(l, col - 1).Value

txt2 = "*" & Trim$(TextBoxRECHERCHER.Value) & "*"

If LCase(txt1) Like LCase(txt2) Then

i = l

End If

Next

If i = l Then

UsfSearch2.ListViewRECHERCHE.ListItems.Add (li), , Orng.Offset(i, 0)

For col = 1 To cmax

UsfSearch2.ListViewRECHERCHE.ListItems(li).ListSubItems.Add (col), , Orng.Offset(i, col)

Next

i = 0

li = li + 1

End If

Next

UsfSearch2.ListViewRECHERCHE.ListItems(1).Selected = False

'End With

End Sub

Si tu veux bien prendre le temps de m'expliquer je t'en serais reconnaissant. Merci !

Re,

Deux remarques :

1. les balises Code

Tu devrais utiliser balises [ CODE] et [ /CODE] ...

Dans la fenêtre où tu écris tes messages, dans le petit menu

Elles sont en position 5 en partant de la gauche .. </>

2. ta procédure

Celle que tu as postée effectue des recherches ... ce n'est pas la procédure initiale de démarrage

Voici ce que j'ai rentré pour le tri, excuse moi je me suis mélanger entre mes topics...

une capture d'écran parlera peut etre mieux

screen

Re,

Une photo est un objet inerte ... qui ne sert rigoureusement à rien ...

Bon Courage pour la suite ..

P.S.

Tu auras sans doute remarqué pour ton autre question ...

que moins de 5 minutes après avoir posté ton ' exemple problème '...

tu as obtenu une réponse ...

que, par ailleurs, tu as eu la politesse de NE PAS COMMENTER ...

Re,

autant pour moi, je fais donc suivre le fichier. Le soucis étant donc lorsque je recherche du 42CD4 avec le bouton "rechercher un matériau"

tous mes matériaux correspondants s'affichent, je cherche par un clic gauche sur la colonne désirée faire trier dans l'ordre croissant ces valeurs là. Il faut d'ailleurs souligner que seul la colonne diamètre sera trier de cette façon.

Enfin, n'étant pas sur le PC avec l’accès internet tout le temps il se peut que je n'ai pas vu ta réponse et auquel cas te remercier.

46stock-bdm.xlsm (72.55 Ko)

Cordialement,

Rechercher des sujets similaires à "trier ordre croissant list view"