Tri des onglets par Date dans cellule [Résolu/Fermé]

1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention - 1 déc. 2016 à 09:31 - Dernière réponse : 1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention
- 1 déc. 2016 à 16:12
Bonjour,

J'ai un classeur avec une feuille "Menu" suivie d'un nombre indéfini d'onglets.
Dans chaque onglet, il y a une date en C2.

J'aimerais, à l'ouverture du classeur, parcourir chaque onglet et afficher, dans la feuille "Menu" (cellules Q4 à Q18), les 15 noms d'onglets dont la date est la plus vieille.

Si quelqu'un a une piste... ce serait vraiment chouette.

Merci !

Afficher la suite 
32Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention

19 réponses

mrjenkins 578 Messages postés jeudi 22 novembre 2007Date d'inscription 17 août 2017 Dernière intervention - 1 déc. 2016 à 10:02
0
Utile
Bonjour,

copie-colle ceci dans Thisworkbook (VBA) :


Private Sub Workbook_Open()
nbSheets = ThisWorkbook.Sheets.Count

ReDim dates(nbSheets - 2, 1) As Variant
sh = 0
For Each ws In Worksheets
If ws.Name <> "Menu" Then
dates(sh, 0) = ws.Range("C2").Value
dates(sh, 1) = ws.Name

sh = sh + 1
End If
Next ws



nb = UBound(dates)
tab_temp = dates
Erase dates
ReDim dates(nbSheets, 1) As Variant
For i = 0 To nb
pos = 0
For l = 0 To nb
If tab_temp(i, 0) > tab_temp(l, 0) And i <> l Then
pos = pos + 1
End If
Next
For ii = 1 To 1
If dates(pos, 0) = "" Then
dates(pos, 0) = tab_temp(i, 0)
dates(pos, 1) = tab_temp(i, 1)
Else
pos = pos + 1
ii = ii - 1
End If
Next
Next


For i = 1 To 15
ThisWorkbook.Sheets("Menu").Cells(i+3, "Q").Value = dates(i - 1, 1)
ThisWorkbook.Sheets("Menu").Cells(i+3, "P").Value = dates(i - 1, 0)
Next
End Sub



--
gbinforme 14415 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 1 déc. 2016 à 10:32
0
Utile
Bonjour,

Je suppose que tu pensais bien le faire en macro :
Private Sub Workbook_Open() ' affiche les noms des 15 onglets les plus anciens
Dim feu As Worksheet, idd As Long, dat As Variant, nom As Variant, mdn As Variant
ReDim tbd(1 To 15), tbn(1 To 15)
For Each feu In ThisWorkbook.Sheets
    If feu.Name <> "Menu" Then
        dat = feu.[C2].Value: nom = feu.Name
        For idd = 1 To 15
            If tbd(idd) = "" Then
                tbd(idd) = dat: tbn(idd) = nom: Exit For
            ElseIf dat < tbd(idd) Then
                mdn = tbd(idd): tbd(idd) = dat: dat = mdn
                mdn = tbn(idd): tbn(idd) = nom: nom = mdn
            End If
        Next idd
    End If
Next feu
Sheets("Menu").[Q4:Q18].Value = Application.Transpose(tbn)
End Sub
1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention - Modifié par 1Globule le 1/12/2016 à 12:48
0
Utile
16
Merci à tous les deux, c'est vraiment gentil.
Je pensais pouvoir adapter vos réponses mais je n'ai pas le niveau, visiblement...

Du coup voici le besoin en totalité :
En plus de la feuille "Menu", il y a une feuille "Temp" à ignorer (je le dis pour le Nb_Sheets).

Sinon, le tri par date est parfait, j'ai juste besoin de récupérer plus d'info sur chaque onglet.
En colonne S doit apparaitre le nom de chaque onglet (pas en Q finalement)
En colonne T doit apparaitre la cellule J2 de chaque onglet
En colonne U doit apparaitre la cellule C6 de chaque onglet
En colonne V doit apparaitre la cellule C2 de chaque onglet
Et en colonne W doit apparaitre le sigle "<", en gras et en centré...
Donc la plage utilisée sera S4:W18 (s'il y a 15 onglets, sinon moins).

Ce n'est pas si difficile je suppose, il suffit de récupérer un peu plus d'infos, mais...
1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention > mrjenkins 578 Messages postés jeudi 22 novembre 2007Date d'inscription 17 août 2017 Dernière intervention - 1 déc. 2016 à 15:41
A priori, je n'ai plus de problème !
Je fais encore quelques tests et je te redis.
mrjenkins 578 Messages postés jeudi 22 novembre 2007Date d'inscription 17 août 2017 Dernière intervention - 1 déc. 2016 à 15:42
Parfait =)

Je guette au cas où ^^
1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention - 1 déc. 2016 à 16:05
Eh ben... Vraiment super !
mrjenkins, un énorme merci pour ta disponibilité, ton aide et ta patience.
Maintenant, je vais passer quelques heures à essayer de tout comprendre dans ton code.
:o)
mrjenkins 578 Messages postés jeudi 22 novembre 2007Date d'inscription 17 août 2017 Dernière intervention - 1 déc. 2016 à 16:07
Pas de quoi, ça m'a amusé ^^

Bon courage (si tu as des questions, hésite pas ;) )
1Globule 32 Messages postés mercredi 4 mai 2016Date d'inscription 8 juin 2017 Dernière intervention > mrjenkins 578 Messages postés jeudi 22 novembre 2007Date d'inscription 17 août 2017 Dernière intervention - 1 déc. 2016 à 16:12
C'est super gentil. J'espère quand même m'améliorer assez pour ne plus avoir besoin d'aide, un jour.
Ce n'est pas gagné...