problème sur tri croissant avec date

cindy75015

XLDnaute Junior
bonjour
j'ai un fichier qui se remplie de la façon suivante plusieurs cellule concaténer avec entrée ou sortie
et quand il est connu le numéro de la machine
or quand je veux faire un tri croissant ou décroissant

il me donne se résultat

Entrée le 17/03/2013 01:29:44
Entrée le 17/03/2013 01:44:52
Entrée le 17/03/2013 03:30:55
Entrée le 17/03/2013 03:33:20
Entrée le 17/03/2013 03:35:03
Entrée le 17/03/2013 03:40:37
Entrée le 17/03/2013 03:43:30
Entrée le 17/03/2013 03:44:16
Entrée le 17/03/2013 03:45:07
Entrée le 17/03/2013 03:46:29
Entrée le 17/03/2013 03:53:38
Entrée le 17/03/2013 04:48:23
Entrée le 17/03/2013 04:51:08
Entrée le 17/03/2013 04:52:46
Sortie le 16/03/2013 18:03 CMC 02
Sortie le 16/03/2013 18:14:50 CMC 02
Sortie le 17/03/2013 01:39:38 CMC 02
Sortie le 17/03/2013 01:45:27 SITMA 10P
Sortie le 17/03/2013 04:40:48 CMC 02
Sortie le 17/03/2013 04:43:24 CMC 02
Sortie le 17/03/2013 04:46:04 CMC 02
Sortie le 17/03/2013 04:46:26 CMC 01
Sortie le 17/03/2013 04:47:37 CMC 03
Sortie le 17/03/2013 04:53:17 CMC 01

comment faire pour avoir le bon tri ordre croissant(donc forcement entrée et sortie melanger)

pour info lorsque c'est une entrée la police est en vert
pour une sortie elle est en rouge
ou se trouve le problème
merci

résultat attendu

Sortie le 16/03/2013 18:03 CMC 02
Sortie le 16/03/2013 18:14:50 CMC 02
Entrée le 17/03/2013 01:29:44
Sortie le 17/03/2013 01:39:38 CMC 02
Entrée le 17/03/2013 01:44:52

etc ....
 

Roland_M

XLDnaute Barbatruc
Re : problème sur tri croissant avec date

bonjour,

ne pas tout mettre dans une seule colonne !
il faut séparer "Entrée le" et "Sortie le" dans une colonne et la date dans la suivante !
effectuer le tri en 1'clé sur la colonne date et en 2'clé sur la colonne "Entrée le" ...
puis une troisième avec la machine pour que "date" soit trié en temps que tel !
faire un essai !?

côté vb c'est faisable mais côté excel pas certain !

EDIT

côté excel faire comme expliqué plus haut mais créer un filtre automatique !
puis trier les dates et le reste suivra.
c'est encore plus simple ! voir ci-joint !
 

Pièces jointes

  • Classeur1.xls
    16.5 KB · Affichages: 42
  • Classeur1.xls
    16.5 KB · Affichages: 43
  • Classeur1.xls
    16.5 KB · Affichages: 41
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : problème sur tri croissant avec date

Bonjour à tous

Pour le fun

Code:
Sub trispe()
tablo = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
 For m = LBound(tablo, 1) To UBound(tablo, 1)
  If Split(tablo(n, 1))(2) & " " & Split(tablo(n, 1))(3) < Split(tablo(m, 1))(2) & " " & Split(tablo(m, 1))(3) Then
    temp = tablo(n, 1)
    tablo(n, 1) = tablo(m, 1)
    tablo(m, 1) = temp
  End If
 Next
Next
Range("B2").Resize(UBound(tablo, 1)) = tablo
End Sub
 

Pièces jointes

  • Tri_special.xls
    42 KB · Affichages: 33

cindy75015

XLDnaute Junior
Re : problème sur tri croissant avec date

bonjour le fil
merci de vos réponse
j'aurais tendance a préféré la macro
la solution de pierrejean fonctionne très bien sur l'exemple
mais ne connaissant pas trop ces code la ,je cherche pour l'appliquer a mon fichier

en faite sur mon fichier la colonne a trié est la colonne N plage (L4:L) bien sur en respectant la case(il faut trier la colonne N mais déplacer la ligne entière)
je ne sais pas si ta macro fait cela pierrejean
qui peux me la modifier pour ma plage a trier
Cindy

j'ai essayer ceci
Sub Macroaaa()
'
' Macroaaa Macro
'

'
tablo = Range("l4:l" & Range("l" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
For m = LBound(tablo, 1) To UBound(tablo, 1)
If Split(tablo(n, 1))(2) & " " & Split(tablo(n, 1))(3) < Split(tablo(m, 1))(2) & " " & Split(tablo(m, 1))(3) Then
temp = tablo(n, 1)
tablo(n, 1) = tablo(m, 1)
tablo(m, 1) = temp
End If
Next
Next
Range("l4").Resize(UBound(tablo, 1)) = tablo
End Sub

Cindy
 

cindy75015

XLDnaute Junior
Re : problème sur tri croissant avec date

voici le fichier
trier par macro la colonne de L4 a L500(par exemple)
en respectant la ligne

données fictives tu peux les modifier sauf les entêtes de colonne
merci julie
 

Pièces jointes

  • teste&tri.xlsx
    40.3 KB · Affichages: 32

cindy75015

XLDnaute Junior
Re : problème sur tri croissant avec date

bonjour pierrejean,le fil
je test ta macro par contre si je modifie une date en colonne N et que j'effectue ta macro le trie ne se fait pas dans l'ordre
par exemple j'ai modifier la ligne 8 j'ai mis le 12 /03 comme date a la place de l'ancienne et le tri me donne en premier la date du 15/03 puis du 12 mars
je te met le fichier
Cindy

ps pour étendre la sélection a 400 ligne je dois modifier ceci
For p = 1 To 12

For p = 1 To 12
ou il y a autre chose a faire

et pour avoir le tri directement en A4
Range("A4").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo ' ligne a activer pour avoir le tri en place
 

Pièces jointes

  • teste&tri (1).xlsm
    46.4 KB · Affichages: 47
  • teste&tri (1).xlsm
    46.4 KB · Affichages: 48
  • teste&tri (1).xlsm
    46.4 KB · Affichages: 44

pierrejean

XLDnaute Barbatruc
Re : problème sur tri croissant avec date

Re

Le problème provient de
Sortie le 15/03/2013 13:22:28 CMC 02

Il y a 2 espaces entre 'Sortie' et 'le'
Si l'on enlève l'espace supplémentaire tout s'arrange
Dis nous si ces espaces sont bien toujours en nombre identiques
Si ce n'est pas le cas je dois revoir la macro (de toute façon ,je vais regarder ce que je peux faire dans ce sens)

Pour le nombre de lignes , il n'y a rien à faire : la macro le gère (sous réserve qu'il n'y ait rien en colonne A après la dernière ligne
 

Pièces jointes

  • teste&tri (1).xlsm
    45.1 KB · Affichages: 31
  • teste&tri (1).xlsm
    45.1 KB · Affichages: 34
  • teste&tri (1).xlsm
    45.1 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : problème sur tri croissant avec date

Bonjour à tous,

Une solution VBA utilisant la colonne M comme colonne auxiliaire :

Code:
Sub Tri()
Application.ScreenUpdating = False
With Range("A4:M" & Range("L" & Rows.Count).End(xlUp).Row)
  .Columns("M").FormulaR1C1 = "=--MID(TRIM(RC[-1]),11,19)"
  .Sort [M4], xlAscending, Header:=xlNo
  .Columns("M").ClearContents
End With
End Sub
Si la colonne M était occupée, il suffirait de l'insérer et de la supprimer à la fin.

Edit : je donne quand même le code dans ce dernier cas :

Code:
Sub Tri()
Application.ScreenUpdating = False
[M:M].Insert 'colonne auxiliaire
With Range("A4:M" & Range("L" & Rows.Count).End(xlUp).Row)
  .Columns("M").FormulaR1C1 = "=--MID(TRIM(RC[-1]),11,19)"
  .Sort [M4], xlAscending, Header:=xlNo
End With
[M:M].Delete
End Sub
A+
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : problème sur tri croissant avec date

Re

Salut ami job

Voila une version qui accepte des espaces supplémentaires (sauf entre la date et l'heure)
 

Pièces jointes

  • teste&tri (1).xlsm
    65.6 KB · Affichages: 34
  • teste&tri (1).xlsm
    65.6 KB · Affichages: 36
  • teste&tri (1).xlsm
    65.6 KB · Affichages: 35

cindy75015

XLDnaute Junior
Re : problème sur tri croissant avec date

re pierrejean,job75,le fil
parfait pour la dernière macro celle ci fonctionne sans problème
encore merci de mettre tes compétences au service de ceux qui en ont besoin
rappelle moi les cours c'est qu'elle jour
merci Cindy
 

Discussions similaires

Réponses
2
Affichages
519

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95