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.
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.