Trier une ListBox par Date

Tiketie

XLDnaute Nouveau
Bonjour tout le monde,

J'ai une ListBox à 6 colonnes, dont une contenant des dates au format JJ/MM/AAAA.
J'aimerais bien arranger cette ListBox de manière à ce que les lignes contenant les dates les plus récentes apparaissent en premier...
J'ai pas mal cherché sur le net, et je n'y ai pas trouvé mon bonheur...

Je suis ouvert à toutes propositions ^^

Merci d'avance
 

sousou

XLDnaute Barbatruc
Bonjour voici une procédure que je n'ai pas utilisée depuis très longtemps
Elle fonctionne avec une liste box à 1 colonne,'il faudra peut-être adaptée,
Rentrer dans la procédure l'objet listbox
'procédure de trie d'une listebox

Sub trie(liste)
n = liste.ListCount
ReDim matable(n)

For i = 0 To n - 1
'Si les valeur sont numériques
If IsNumeric(liste.List(i)) = True Then
k1 = Val(liste.List(i))
'__________Si alpha_______
Else
k1 = LCase(liste.List(i))
End If
If k1 > maxi Then
matable(i) = k1
maxi = k1
Else
k = 0
While k1 > matable(k)
k = k + 1
Wend
'décallage
For Z = i To k Step -1
matable(Z + 1) = matable(Z)
Next
matable(k) = k1
Application.StatusBar = i
End If
Next
liste.List() = matable

End Sub

! coucou à tous
 

Tiketie

XLDnaute Nouveau
Bonjour.
J'ai des modules de service pour ça.
J'en équiperais volontiers votre classeur joint.

Merci beaucoup pour vos réponses, je vous transmets mon fichier, mais je vous préviens ce n'est pas glorieux ^^ (je débute en VBA)
C'est un projet de bdd pour un salon de coiffure, bien entendu tout les noms et coordonnées que vous y trouverez sont fictifs ^^
Vous pourrez y voir des macros dont une effectuant un tri par ordre alphabétique automatique..
 

Pièces jointes

  • ProjetFicheClient.xlsm
    42.5 KB · Affichages: 86

Tiketie

XLDnaute Nouveau
Bonjour voici une procédure que je n'ai pas utilisée depuis très longtemps
Elle fonctionne avec une liste box à 1 colonne,'il faudra peut-être adaptée,
Rentrer dans la procédure l'objet listbox
'procédure de trie d'une listebox

Sub trie(liste)
n = liste.ListCount
ReDim matable(n)

For i = 0 To n - 1
'Si les valeur sont numériques
If IsNumeric(liste.List(i)) = True Then
k1 = Val(liste.List(i))
'__________Si alpha_______
Else
k1 = LCase(liste.List(i))
End If
If k1 > maxi Then
matable(i) = k1
maxi = k1
Else
k = 0
While k1 > matable(k)
k = k + 1
Wend
'décallage
For Z = i To k Step -1
matable(Z + 1) = matable(Z)
Next
matable(k) = k1
Application.StatusBar = i
End If
Next
liste.List() = matable

End Sub

! coucou à tous

Merci ! Je vais me pencher dessus...
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Exemple en PJ

Code:
Private Sub CommandTriNom_Click()
  Dim a()
  a = Me.ListBox1.list
  Call Tri(a(), 1, LBound(a, 1), UBound(a, 1))
  Me.ListBox1.list = a
End Sub

Private Sub CommandTriCompte_Click()
  Dim a()
  a = Me.ListBox1.list
  Call Tri(a(), 0, LBound(a, 1), UBound(a, 1))
  Me.ListBox1.list = a
End Sub

Sub Tri(a, ColTri, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2, ColTri)
  g = gauc: d = droi
  Do
  Do While a(g, ColTri) < ref: g = g + 1: Loop
  Do While ref < a(d, ColTri): d = d - 1: Loop
  If g <= d Then
  For k = LBound(a, 2) To UBound(a, 2)
  temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
  Next k
  g = g + 1: d = d - 1
  End If
  Loop While g <= d
  If g < droi Then Call Tri(a, ColTri, g, droi)
  If gauc < d Then Call Tri(a, ColTri, gauc, d)
End Sub

JB
 

Pièces jointes

  • Copie de ListBoxTriee.xls
    92.5 KB · Affichages: 124

Tiketie

XLDnaute Nouveau
Merci Beaucoup
Je vais voir si je peux adapter cela à mon fichier et si cela fonctionne avec des dates

EDIT :
Il semblerait que ça ne fonctionne pas, l'erreur "L'indice n'appartient pas à la sélection" ne cesse d'apparaître.
 
Dernière édition:

Tiketie

XLDnaute Nouveau
Une autre idée que j'ai eu est d'appliquer un deuxième filtre sur ma feuille :

En effet, on tri d'abord par date, et ensuite par Identifiant, les dates les plus récentes apparaîtront en première !

Seulement, je ne sais pas 1)Comment le faire et 2)Si cela m'aidera.....
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510