VBA Trie chronologique par semaine

amandine76

XLDnaute Nouveau
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, Amandine.
 

jp14

XLDnaute Barbatruc
Re : VBA Trie chronologique par semaine

Bonsoir
Bonsoir pierrejean

A priori avec "Cells(NS, 21).Value = "W0" & entier" excel va trier sur un chaine de caractères.
Dan ce cas pour que le tri soit correct il faut pour les unités mettre 0 devant le nombre à un chiffre.

A tester

JP
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : VBA Trie chronologique par semaine

bonsoir AMANDINE

Voici une fonction personnalisée qui te donne le Numero de la semaine (Norme Européenne) en format nombre
Par consequent elle sera triée comme tu le souhaites

Si tu as des difficultés a l'adapter n'hesite pas a revenir

Edit: désolé pour lacollision JP :)
 

Pièces jointes

  • NOSEM.zip
    6.7 KB · Affichages: 81

amandine76

XLDnaute Nouveau
Re : VBA Trie chronologique par semaine

Pierre-jean, je cherche mes numéro de semaine avec le code que j'ai joint car la fonction =NOSEM() n'est pas correct, ca ne foncitonne pas pour 2010. donc il me faut absolument chercher avec le code qui fonctionne qqe soit l'année.

JP, comment faire pour mettre un 0 devant les unités, c'est ce que j'ai essayé de faire mais ca le met devant même les dizaines (ex: 01, 010)

Merci pour votre aide,

bisous, Amandine
 

pierrejean

XLDnaute Barbatruc
Re : VBA Trie chronologique par semaine

Re

Comment cela pas correct pour 2010 ?
Peux-tu preciser ce que tu souhaites pour 2010 ?

Sinon tu peux t'inspirer de ce que j'ai fait pour le special Amandine
Cela donnerait
Code:
......
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) / 7 + 1
entier = Int(reS)
[COLOR=blue]if len(entier)=1 then entier ="0" & entier
[/COLOR]Cells(NS, 21).Value = "W0" & entier
'MsgBox "Semaine: "W0" & entier
.....
 

amandine76

XLDnaute Nouveau
Re : VBA Trie chronologique par semaine

Bonsoir Jean Pierre,

oui, pour 2010, il y a un décalage d'une semaine avec les semaines de fin de l'année 2010.

en fait, je crois que je me suis trop creusé la tête, je suis arrivée à mes fins en faisant un tri d'abord sur la colonne source ( ou j'ai mes dates) et ensuite, je créee une autre colonne dans laquelle je fais ma convertion et le tour est joué. Merci bcp pour votre aide Jean Pierre et JP14. bisousssssss, Amandine.
 

Discussions similaires

Réponses
8
Affichages
700

Membres actuellement en ligne

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 644
dernier inscrit
MOLOKO67