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 }

Ajouter un commentaire





Se souvenir de mes informations?



Les balises HTML ne sont pas permises dans les commentaires. Pour faire un lien, il suffit de donner l'URL, préfixée par http://.