VBA Tri chronologique par semaine
Résolu
aurelie76
Messages postés
88
Date d'inscription
Statut
Membre
Dernière intervention
-
aurelie76 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
aurelie76 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je reviens vers les plus forts car je suis confrontée à un problème de tri par numéro de semaine. En fait, dans le bout de code ci dessous, je convertie une date en Numéro de semaine., et impossible de trier cette colonne par ordre croissant, Excel trie de la manière suivante : exemple :
1 / 10 / 11 / 17 / 2 / 22 / 26 / 3 / 31 / 32 / 4 ainsi de suite autant qu'il y a de cellule à convertir. Je cherche à trier cette exemple comme ceci :
1 / 2 / 3 / 4 / 10 / 11 / 17 / 22 / 26 / 31 / 32
le code pour convertir la date en numéro de semaine:
sub command_click()
Columns("U:U").Select
Selection.Insert Shift:=xlToRight
Range("T1").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
endline = ActiveCell.Row
For NS = endline To 2 Step -1
Cells(NS, 20).Select
reP = ActiveCell.Value
'If reP = "" Or Not IsDate(reP) Then
'Exit Sub
'Else: reP = DateValue(reP)
dteVar = CDate(reP)
D = Int(dteVar)
reS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) / 7 + 1
entier = Int(reS)
Cells(NS, 21).Value = "W0" & entier
'MsgBox "Semaine: "W0" & entier
Next NS
end Sub
Même en mode "normal" d'excel avec le bouton de tri, je n'arrive pas à le faire dans l'ordre croissant, je pense que mon problème vient du format de la cellule mais je ne peux pas le convertir en numérique, ca ne fonctionne pas, excel ne reconnais pas le format numérique sur cette conversion.
De même, la fonction SEMAINE() n'est pas assez précise dans lle temps (pour 2010 par exemple, cette fonction est fausse).
Si il y a un fortiche en VBA, merci pour son aide.
bisous, Aurelie.
Je reviens vers les plus forts car je suis confrontée à un problème de tri par numéro de semaine. En fait, dans le bout de code ci dessous, je convertie une date en Numéro de semaine., et impossible de trier cette colonne par ordre croissant, Excel trie de la manière suivante : exemple :
1 / 10 / 11 / 17 / 2 / 22 / 26 / 3 / 31 / 32 / 4 ainsi de suite autant qu'il y a de cellule à convertir. Je cherche à trier cette exemple comme ceci :
1 / 2 / 3 / 4 / 10 / 11 / 17 / 22 / 26 / 31 / 32
le code pour convertir la date en numéro de semaine:
sub command_click()
Columns("U:U").Select
Selection.Insert Shift:=xlToRight
Range("T1").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
endline = ActiveCell.Row
For NS = endline To 2 Step -1
Cells(NS, 20).Select
reP = ActiveCell.Value
'If reP = "" Or Not IsDate(reP) Then
'Exit Sub
'Else: reP = DateValue(reP)
dteVar = CDate(reP)
D = Int(dteVar)
reS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) / 7 + 1
entier = Int(reS)
Cells(NS, 21).Value = "W0" & entier
'MsgBox "Semaine: "W0" & entier
Next NS
end Sub
Même en mode "normal" d'excel avec le bouton de tri, je n'arrive pas à le faire dans l'ordre croissant, je pense que mon problème vient du format de la cellule mais je ne peux pas le convertir en numérique, ca ne fonctionne pas, excel ne reconnais pas le format numérique sur cette conversion.
De même, la fonction SEMAINE() n'est pas assez précise dans lle temps (pour 2010 par exemple, cette fonction est fausse).
Si il y a un fortiche en VBA, merci pour son aide.
bisous, Aurelie.
A voir également:
- VBA Tri chronologique par semaine
- Excel trier par ordre croissant chiffre - Guide
- Logiciel tri photo - Guide
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Excel trier par date ne fonctionne pas ✓ - Forum Excel
2 réponses
Coucou,
je n'ai pas le temps tout de suite d'étudier ton problème de tri, mais pour récupérer la semaine dans une date, il existe une fonction qui marche bien (jusqu'en 9999 je crois).
semaine = datepart ("ww", madate, vbMonday)
(vbmonday, pour dire que les semaines commence un lundi)
Je regarderais ton tri plus tard, mais pour ruser voici une petite astuce, au lieu de transformer ta cellule avec WO12 par exemple tu mets simplement 12 mais au préalable dans les cases où tu as tes semaines tu change le format de ta cellule et en nombre tu fais personnalisée puis : WOStandard, ce qui fais que lorsque tu taperas un nombre quelconque dans tes cellules, mettons 5, apparaitra WO5 mais tu pourras faire un tri comme si c'était des nombres.
A plus
je n'ai pas le temps tout de suite d'étudier ton problème de tri, mais pour récupérer la semaine dans une date, il existe une fonction qui marche bien (jusqu'en 9999 je crois).
semaine = datepart ("ww", madate, vbMonday)
(vbmonday, pour dire que les semaines commence un lundi)
Je regarderais ton tri plus tard, mais pour ruser voici une petite astuce, au lieu de transformer ta cellule avec WO12 par exemple tu mets simplement 12 mais au préalable dans les cases où tu as tes semaines tu change le format de ta cellule et en nombre tu fais personnalisée puis : WOStandard, ce qui fais que lorsque tu taperas un nombre quelconque dans tes cellules, mettons 5, apparaitra WO5 mais tu pourras faire un tri comme si c'était des nombres.
A plus
bonjour Mikebzh,
je crois que je me suis fourvoyée, une idée de génie (lol) m'est apparue dans ma tête décervellée, en fait, pour trier ma colonne dans l'ordre, je trie la colonne dans laquelle je prend ma source, ici, la colonne des dates, et ensuite je fais ma conversion dans une autre colonne et celle ci se trouve automatiquement trier.
Je crois que j'ai cherche midi à 14H00.
Merci pour ton aide précieuse,
bisous,
Aurelie
je crois que je me suis fourvoyée, une idée de génie (lol) m'est apparue dans ma tête décervellée, en fait, pour trier ma colonne dans l'ordre, je trie la colonne dans laquelle je prend ma source, ici, la colonne des dates, et ensuite je fais ma conversion dans une autre colonne et celle ci se trouve automatiquement trier.
Je crois que j'ai cherche midi à 14H00.
Merci pour ton aide précieuse,
bisous,
Aurelie