• 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
Microsoft 365 probleme d heure
Réponses
11
Affichages
295
  • Question Question
Réponses
32
Affichages
862
Réponses
2
Affichages
248
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
697
  • Question Question
Réponses
11
Affichages
467
Réponses
1
Affichages
193
Réponses
4
Affichages
187
  • Question Question
Microsoft 365 couleur et ligne
Réponses
6
Affichages
299
Réponses
4
Affichages
580
  • Question Question
Autres Vba
Réponses
4
Affichages
250
Réponses
19
Affichages
753
Réponses
2
Affichages
177
Retour