listbox date

chriss54

XLDnaute Nouveau
bonjour à toutes et tous
je suis nouveau, j ai préparé un fichier dans lequel se trouve mon souci...
merci à vous tous
 

Pièces jointes

  • liste de date tri croissant.xlsm
    30.3 KB · Affichages: 11

JM27

XLDnaute Barbatruc
Bonsoir
pourquoi ne pas tout avoir mis dans la même feuille ???
Ca complique beaucoup
et ca rend le tri très difficile ( très simple si sur une feuille)
 

Pièces jointes

  • liste de date tri croissant.xlsm
    32.8 KB · Affichages: 17
Dernière édition:

JM27

XLDnaute Barbatruc
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
 

Paf

XLDnaute Barbatruc
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
 

Paf

XLDnaute Barbatruc
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
 

chriss54

XLDnaute Nouveau
si possible j'ai besoin de faire un cumul de : sommeprod en ("J5") des onglets du 4è au dernier onglet crée .....
la formule =
=SOMMEPROD((A6:A200>=H5)(A6:A200<=I5)(D6:D200))

c faisable de cumuler dans un userform par exemple?
 

Pièces jointes

  • liste de date tri croissant sommeprod cumul.xlsm
    35.1 KB · Affichages: 7

Discussions similaires

Réponses
8
Affichages
306
Réponses
25
Affichages
774

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974