Comment trouver le numéro de semaine
Marco a écrit le Lundi 15 Juillet 2002 à 15:29:43
Voici comme obtenir le numéro de la semaine en formule à partir d'une date "MaDate" :wkd1 := @Weekday(MaDate);
WB := @Adjust(MaDate; 0; 0; -@If(wkd = 1; 0; wkd1 - 1); 0; 0; 0);
jan1 := @Date(@Year(MaDate);1; 1);
wkd2 := @Weekday(jan1);
tYB := @Adjust(jan1; 0; 0; -@If(wkd2 = 1; 0; wkd2 - 1); 0; 0; 0);
YB := @If(tYB <= @Date(@Year(tYB); 12; 28); @Adjust(tYB; 0; 0; 7; 0;
0; 0); tYB);
jan1last := @Date(@Year(MaDate) - 1; 1; 1);
wkd3 := @Weekday(jan1last);
tYBlast := @Adjust(jan1last; 0; 0; -@If(wkd3 = 1; 0; wkd3 - 1); 0; 0; 0);
YBlast := @If(tYBlast <= @Date(@Year(tYBlast); 12; 28); @Adjust(tYBlast;
0; 0; 7; 0; 0; 0); tYBlast);
FirstSemaine := @If(MaDate < YB; YBlast; YB);
Semaine := @Right("0" + @Text((((WB - FirstSemaine) / 86400)
/ 7) + 1); 2);
Annee := @Text(@Year(@Adjust(FirstSemaine; 0; 0; 3; 0; 0; 0)));
"Année / Semaine : " + Annee + " / " + Semaine
Commentaire(s)
Comment trouver le numéro de semaine
DWALTER le 29/03/2007 12:08:51
Bonjour,
Je viens de tester la formule et çà marche !!
Merci mille fois à Marco qui a déposé cette ressource.
Cordialement.
Comment trouver le numéro de semaine
Bernardo le 07/10/2008 10:14:10
Il faut remplacer la ligne qui met à jour la variable Semaine par :
Semaine := @Right("0" + @Text(@Integer((((WB - FirstSemaine) / 86400) / 7) + 1)); 2);
La fonction @Integer permet de récupérer la valeur entière du calcul car s'il ne tombe pas juste, @Right renvoie des pouièmes...
Comment trouver le numéro de semaine
Bernardo le 07/10/2008 14:03:39
On peut aussi remplacer la ligne 2 par :
WB := @Adjust(MaDate; 0; 0; 1 - wkd1); 0; 0; 0);
La variable wkd est toujours vide car par initialisée.
Comment trouver le numéro de semaine
Sébastien le 05/01/2009 12:28:09
Ce script ne respecte pas la norme ISO 8601 (vis à vis des semaines 53 et 1) en voici une correction :
Il faut un champ de type date/heure qui se nomme cDate.
d := @If(@IsNull(cDate); @Return(""); @Date(cDate));
jourD := @Weekday(d);
jeudiD := @Adjust(d;0;0; @If(jourD = 1; -3; 5 - jourD); 0;0;0);
quatreJanv := @Date(@Year(jeudiD); 1; 4);
wkdQuatre := @Weekday(quatreJanv);
lundiSemQuatre := @Adjust(quatreJanv;0;0; -@If(wkdQuatre = 1;6; wkdQuatre -2); 0;0;0);
dif := @Round(((jeudiD - quatreJanv) / 86400) / 7);
@Prompt([OK];"test"; @Text(dif + 1));
Je n'ai pas utilisé les mêmes noms de variables et le calcul se base sur l'article suivant : { Link }






