Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Trie jours/heures/minutes

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'espère que vous allez tous bien

Me voici de retour pour un souci de tri.

exemple de données triées :
25/02/2017 00:00
25/02/2017 00:00
25/02/2017 00:00
25/02/2017 08:30
25/02/2017 08:45

Ce que je voudrais obtenir :
25/02/2017 08:30
25/02/2017 08:45

25/02/2017 00:00
25/02/2017 00:00
25/02/2017 00:00

Malgré mes recherches sur mon copain le net et mon forum préféré + mes tentatives, je n'y suis pas arrivé.
Auriez-vous la solution ?

Je joins un classeur test explicatif avec le résultat dont j'ai besoin.
Avec mes remerciements,
Je vous souhaite une belle journée,
Amicalement,
Lionel,
 

Pièces jointes

  • Trie par jours et heures minutes.xlsm
    19.6 KB · Affichages: 26

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Pierre-Jean,

En fait, comme toujours, c'est différent dans mon classeur de travail et je n'arrive pas à modifier ton code.

mon code simple de tri d'origine + ton code :
Code:
Tri d'origine de la ligne 7 à la ligne 20000 (tri sur la colonne AG)
    Rows("7:20000").Select
    ActiveWorkbook.Worksheets("SuivisAppels").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("SuivisAppels").Sort.SortFields.Add Key:=Range("ag7:ag20000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("SuivisAppels").Sort
        .SetRange Range("A7:BBZ20000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


Code tri Pierre-Jean
Sub Trie_ascendant1()
   tablo = Range("E2:E16")
For n = LBound(tablo, 1) To UBound(tablo, 1)
   For m = LBound(tablo, 1) To UBound(tablo, 1)
   'si l'heure est à 0 alors on ajoute 1 jour (ou presque puisque 24 h n'existe pas)
    If tablo(m, 1) - Int(tablo(m, 1)) = 0 Then tablo(m, 1) = tablo(m, 1) + CDate("23:59:59")
    ' on classe de façon classique
      If tablo(m, 1) > tablo(n, 1) Then
          temp = tablo(m, 1)
          tablo(m, 1) = tablo(n, 1)
          tablo(n, 1) = temp
      End If
   Next
Next
' si l'heure est à 0 on enleve ce qui a été ajouté
For n = LBound(tablo, 1) To UBound(tablo, 1)
   If Abs(tablo(n, 1) - Int(tablo(n, 1)) - CDate("23:59:59")) < 0.001 Then tablo(n, 1) = Int(tablo(n, 1))
Next
Range("E2").Resize(UBound(tablo)) = tablo
End Sub

J'ai encore besoin d'un coup de pouce et je joins le classeur test.
Un grand merci pour ton aide,
Amicalement,
Lionel,
 

Pièces jointes

  • Trie par jours et heures minutes.xlsm
    21.4 KB · Affichages: 22
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re
Enfin arthour !!!
Ton code classe la zone A7:BBZ2000 selon la colonne AG
Cela n'a strictement rien a voir avec le problème de départ !!!!
Par ailleurs , je suppose que les dates avec heures a 00:00 ne sont pas toutes identiques
Comment doivent elles etre classées ?
Copie une vingtaine de lignes représentatives de ton vrai fichier et indique le résultat que tu souhaites
Je sais cela fait du job mais écrire la bonne macro en fait aussi !!!
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Pierre-Jean,

J'ai essayé de faire un extrait de mon fichier mais c'est trop long.
En fait, c'est bien la colonne E qui est à trier donc pas de souci de ce cpoté.
Monsieur problème est que dans mon fichier, c'est toute la ligne qui doit être triée :
Rows("7:20000").Select

C'est cela que je n'arrive pas à coder.
Je remets le classeur avec l'explication.

Merci à toi,
Amicalement,
Lionel,
 

Pièces jointes

  • Trie par jours et heures minutes.xlsm
    21.4 KB · Affichages: 26

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir Pïerre-Jean,

Merci de m'avoir répondu.

J'essaie de me faire comprendre (LOL, je ne suis pas toujours clair

Dans ton code, tu écris : tablo = Range("E2:E16")

J'ai besoin qu'à la place le code trie les lignes entièrement de la ligne 7 à la ligne 20000 sur la colonne E

autrement dit : trier de Rows("7:20000").Select sur la colonne E

Je vais réfléchir pour le dire autrement si besoin.
Amicalement,
Lionel,
 

Discussions similaires

Réponses
18
Affichages
2 K
Réponses
22
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…