• Initiateur de la discussion Initiateur de la discussion chriss54
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bonsoir
pour la date

VB:
Private Sub UserForm_Initialize()
    Me.ListBox1.ColumnWidths = "100;150;50"
    For I = 1 To Worksheets.Count
        With Sheets(I)
                If Sheets(I).Name <> "acceuil" Then
                        Me.ListBox1.AddItem
                        Me.ListBox1.List(NbLigneUtilisée, 0) = .Range("A3")
                        Me.ListBox1.List(NbLigneUtilisée, 1) = .Range("H3").Text
                        Me.ListBox1.List(NbLigneUtilisée, 2) = .Range("I3")
                        NbLigneUtilisée = NbLigneUtilisée + 1
                End If
        End With
    Next
End Sub

pour le tri je regarde
 
bonjour à tous,

une solution possible pour le tri en utilisant une fonction de tri de J. BOISGONTIER

A rajouter dans Private Sub UserForm_Initialize():

au début:
VB:
Dim T()


après le Next:
VB:
    T = ListBox1.List
    Tri T(), 1, LBound(T, 1), UBound(T, 1)
    ListBox1.Clear
    For i = LBound(T, 1) To UBound(T, 1)
        T(i, 1) = Format(T(i, 1), "dddd d mmmm yyyy")
    Next
    ListBox1.List = T


et dans la feuille de code de l'userform:

VB:
Sub Tri(a(), ColTri, gauc, droi)
' Quick sort J.BOISGONTIER http://boisgontierjacques.free.fr/pages_site/tableaux.htm#ListeTriee
  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
 
Je m'étais focalisé sur un tri croissant sur la date, et de plus j'avais omis de signaler la modification d'une instruction pour que ça fonctionne: = .... .Range("H3").Value2

Pour trier sur le nombre de jour restant:

La Sub Tri() ne change pas

après le Next:, remplacer tout le code proposé par :

VB:
    T = ListBox1.List
    ListBox1.Clear
    For i = LBound(T, 1) To UBound(T, 1) ' on transforme la 3ème colonne en entier,
        T(i, 2) = CInt(T(i, 2))                          '  car la listbox fournit du texte et le tri ne
    Next                                                      ' se fait pas correctement
    Tri T(), 2, LBound(T, 1), UBound(T, 1) ' tri sur 3ème colonne ( la première =0)
    ListBox1.List = T
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
32
Affichages
452
Réponses
2
Affichages
176
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
389
Réponses
4
Affichages
132
  • Question Question
Microsoft 365 couleur et ligne
Réponses
6
Affichages
249
Réponses
4
Affichages
498
  • Question Question
Autres Vba
Réponses
4
Affichages
170
Réponses
19
Affichages
591
Réponses
2
Affichages
128
Réponses
5
Affichages
247
Réponses
2
Affichages
104
Retour