Excel : comment trier des dates aaaa/mm/jj et aaaa seul ?

Résolu/Fermé
guypage Messages postés 4 Date d'inscription jeudi 23 juin 2022 Statut Membre Dernière intervention 10 août 2022 - 23 juin 2022 à 11:05
guypage Messages postés 4 Date d'inscription jeudi 23 juin 2022 Statut Membre Dernière intervention 10 août 2022 - 24 juin 2022 à 10:45
Bonjour.
Par une macro, je voudrais trier un tableau sur les dates, mais certaines dates sont de type aaaa/mm/jj , alors que d'autres n'ont que l'année (aaaa), sans jour ni mois !

-Vu que les dates peuvent être antérieures à 1900, je les mets au format Standard.
-Si, dans une ligne, je n'ai que l'année, cette ligne doit se positionner en tête de l'année concernée.
-Je demande une macro car le tableau comporte notamment une colonne "Page" avec déjà une macro de tri ; je veux pouvoir facilement basculer entre ces 2 tris. Ce tri sur les dates n'est donc pas un "one shot" ! ;)

Merci pour votre aide.

GC

NB : je peux fournir un fichier Excel en exemple.
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
23 juin 2022 à 12:01
0
guypage Messages postés 4 Date d'inscription jeudi 23 juin 2022 Statut Membre Dernière intervention 10 août 2022
23 juin 2022 à 13:05
Bonjour Pivert.

Merci pour votre réponse, mais c'est assez confus et me semble répondre de loin à mon problème !
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
23 juin 2022 à 16:37
-Si, dans une ligne, je n'ai que l'année, cette ligne doit se positionner en tête de l'année concernée.

il suffit d'ajouter /01/01 pour être en tête de l'année concernée

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1")
    NoCol = 1 'lecture de la colonne 1
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
       If Len(Var) = 4 Then
       FL1.Cells(NoLig, NoCol) =  FL1.Cells(NoLig, NoCol) & "/01/01"
       End If
    Next
    Set FL1 = Nothing
End Sub


ensuite faire le tri manuellement en se servant de l'enregistreur de macro pour avoir le code

voilà
@+
0
guypage Messages postés 4 Date d'inscription jeudi 23 juin 2022 Statut Membre Dernière intervention 10 août 2022
24 juin 2022 à 10:45
Bonjour Pivert.

Merci pour votre solution. :)
En passant par une colonne cachée qui se complète comme proposé, je peux garder les dates originelles visibles (aaaa/mm/jj ou simplement aaaa).

Bonne journée

GC
0