Microsoft 365 Tri dates sur colonne - cellules formatées "29 03 2021 08:30"

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Encore besoin de nos ténors vba :)
Je bute sur un tri.
Voici mon souci :

Je souhaite faire un tri pour afficher en 1ères lignes mes rappels selon les dates et heures de la Col "J" (date plus récente > date plus ancienne),
Si je fais mon tri sur la col "J" le tri est fait "DANS LE DESORDRE",

Pour afficher mes rappels dans le bon ordre, j'ai trouvé une solution :
J'ai ajouté dans la col "N" une formule et le tri est bien selon mon besoin,
Toutefois, ça alourdi mon fichier et j'aimerais pour faire le bon tri directement sur la col J sans avoir besoin d'ajouter des formules en col "J".


Malgré mes tentatives et recherches, je n'ai pas trouvé comment faire :mad:
Auriez-vous la solution ?
Je joins le fichier test et je continue mes recherches.
Mes remerciements à toutes et à tous,
Amicalement,
lionel,
 

Pièces jointes

  • forum_tri.xlsm
    31.2 KB · Affichages: 16
Solution
Bonjour Lionel, chris, sylvanu, fanch55,

Bien sûr il faut trier sur une colonne de vraies dates mais c'est à la macro de la créer :
VB:
Sub tri_rappelsJ()
With Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("4:" & .Range("J65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        Application.ScreenUpdating = False
        .Columns(10).EntireColumn.Insert 'insère une colonne auxiliaire
        .Columns(10) = "=--(SUBSTITUTE(LEFT(TRIM(RC[1]),10),"" "",""/"")&RIGHT(TRIM(RC[1]),6))"
        .Columns(10) = .Columns(10).Value 'supprime les formules
        .Sort .Columns(10), xlAscending, Header:=xlNo
        .Columns(10).EntireColumn.Delete 'supprime la colonne auxiliaire...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel,
Ah la gestion des dates et heure sous XL, on pourrait écrire un bouquin. :)
Le seul moyen que j'ai trouvé est de remettre en forme la colonne J et de la mettre sous la forme
dd/mm/yyyy hh:mm sinon le tri ne va pas. Avec :
VB:
Sub MiseEnFormeDate()
    Dim tablo, L%
    For L = 4 To Range("J65500").End(xlUp).Row
        tablo = Split(Cells(L, "J"), " ")
        If UBound(tablo) > 2 Then
            If IsNumeric(tablo(2)) Then
                Cells(L, "J") = Format(CDate(tablo(0) & "/" & tablo(1) & "/" & tablo(2) & " " & tablo(3)), "dd/mm/yyyy hh:mm")
            End If
        End If
    Next L
End Sub
Et appel de cette macro dans vos deux macros de tri.
( Si on essaie de mettre en forme de type dd mm yyyy hh:mm ça ne marche pas alors que le contenu est bien le même puisque ça n'affecte que l'affichage. No capito. )
 

Pièces jointes

  • forum_tri (1).xlsm
    34.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Lionel, chris, sylvanu, fanch55,

Bien sûr il faut trier sur une colonne de vraies dates mais c'est à la macro de la créer :
VB:
Sub tri_rappelsJ()
With Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("4:" & .Range("J65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        Application.ScreenUpdating = False
        .Columns(10).EntireColumn.Insert 'insère une colonne auxiliaire
        .Columns(10) = "=--(SUBSTITUTE(LEFT(TRIM(RC[1]),10),"" "",""/"")&RIGHT(TRIM(RC[1]),6))"
        .Columns(10) = .Columns(10).Value 'supprime les formules
        .Sort .Columns(10), xlAscending, Header:=xlNo
        .Columns(10).EntireColumn.Delete 'supprime la colonne auxiliaire
    End With
End With
End Sub
Nota : pour l'instant pas besoin des Application.EnableEvents = False/True.

A+
 

Pièces jointes

  • forum_tri(1).xlsm
    30.8 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi