VBA Tri chronologique par semaine

Résolu/Fermé
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 - 18 janv. 2009 à 19:10
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 - 18 janv. 2009 à 20:40
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.

2 réponses

mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
18 janv. 2009 à 20:03
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
0
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 3
18 janv. 2009 à 20:40
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
0