Signaler

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

Posez votre question 1Globule 26Messages postés mercredi 4 mai 2016Date d'inscription 1 décembre 2016 Dernière intervention - Dernière réponse le 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 
Utile
+0
moins plus
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



--
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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 26Messages postés mercredi 4 mai 2016Date d'inscription 1 décembre 2016 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.
Répondre
mrjenkins 491Messages postés jeudi 22 novembre 2007Date d'inscription 7 décembre 2016 Dernière intervention - 1 déc. 2016 à 15:42
Parfait =)

Je guette au cas où ^^
Répondre
1Globule 26Messages postés mercredi 4 mai 2016Date d'inscription 1 décembre 2016 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)
Répondre
mrjenkins 491Messages postés jeudi 22 novembre 2007Date d'inscription 7 décembre 2016 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 ;) )
Répondre
1Globule 26Messages postés mercredi 4 mai 2016Date d'inscription 1 décembre 2016 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é...
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !