IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Trouver le numéro de la semaine

Code exemple pour retourner le numéro d'une semaine

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Produit : 4D 2004 · Plateforme : Mac & Win

Si vous voulez connaître le numéro de semaine du 1er avril 2453, il suffit d'écrire

 
Sélectionnez
MonNumSemaine:=NumeroDeSemaine (!01/04/2453!)

après avoir recopié la méthode suivante :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
`NumeroDeSemaine(Date)-›Numéro de la semaine
`Paramètre Type Description
`Date Date Date dont on veut connaître le numéro de semaine
`Résultat entier Numéro de la semaine où se trouve la date

C_DATE($1;$NouvelAn)
C_ENTIER($0;$NoJour)
$NouvelAn:=Date("01/01/"+Chaine(Annee de($1)))

`trouver le premier jour de l'année
$NoJour:=Numéro du jour($NouvelAn)-1
$NoJour:=$NoJour+(7* Num($NoJour=0))

` le lundi devient 1er jour et dimanche 7e
$0:= Ent (($NoJour+($1-$NouvelAn+1)+5)/7)- Ent ($NoJour/5)

`c'est tout, c'est fini !

Au cas ou   `mais il faut contrôler les semaines bornes

  : ($0=0)
    ` ... chercher le n° de semaine du dernier jour de l'année précédente
    $0:= NumeroDeSemaine ($NouvelAn-1)
    `qui peut éventuellement renvoyer au cas semaine 53
    ($0=53) $NouvelAn:= Date ("01/01/"+ Chaine ( Annee de ($1)+1))
    `chercher le n° de semaine du premier jour de l'année suivante
    Si (( Numéro du jour ($NouvelAn)1) (Numéro du jour ($NouvelAn)6))
        `si plus petit que vendredi (attention à dimanche =1 ici)
        $0:=1
    Fin de si   `sinon on garde 53

Fin de cas

`Note : Attention au nom de cette méthode récursive
`dont le nom est utilisé par elle-même.
`Si vous changez le nom, pensez à le faire dans la méthode.

Et si vous vouliez connaître le premier jour de la semaine de l'année 2013 à la 13e semaine, vous écririez DateDansSemaine (2013;13) après avoir recopié la méthode suivante :

(Notez qu'on peut aussi obtenir le premier jour de la première semaine de l'année 2013 en ne passant que le premier paramètre ou obtenir le premier jeudi de la 13e semaine de l'année 2013 en passant 5 ou la constante jeudi dans le 3e paramètre.)

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
`DateDansSemaine (Année{;Semaine;Jour})-›Date
`expl:DateDansSemaine(2013;13;jeudi)
`Paramètre Type Description
`Année entier Année de recherche
`semaine entier semaine de recherche
`N° du jour entier si on veut un autre jour que le lundi
`Résultat date date

C_DATE($0;$NouvelAn)
C_ENTIER($1;$2;$3;$NoJour)
$NouvelAn:= Date ("01/01/"+Chaine($1))

`trouver le premier jour de l'année
$NoJour:= Numéro du jour ($NouvelAn)-1
$NoJour:=$NoJour+(7* Num ($NoJour=0))

`décalage : le lundi devient 1er jour et dimanche septième
$0:=($NouvelAn-$NoJour+1)+(7* Num ($NoJour4))

`Résultat=(premier jour de la semaine du premier de l'an)
`+(ajouter 7 jours si n°jour vendredi samedi ou dimanche)
Si ( Nombre de paramètres1)
    $0:=$0+(($2-1)*7)
Fin de si

`+(nombre de semaines demandé - une pour la 1ere)
Si ( Nombre de paramètres2 )
    $0:=$0+$3-2+(7* Num ($3=1))
Fin de si

`+décalage de jours (1=dimanche, 2=lundi, etc.)

Ici, aucun contrôle sur les valeurs des paramètres pour une saisie du type

 
Sélectionnez
DateDansSemaine(20130 ;-13 ;420)

On pourrait écrire :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Si (Nombre de parametres›1)
    $0:=$0+(($2-Num($20))*7)  `si semaine négative
Fin de si

Si (Nombre de parametres›2)

    Si ($31) | ($37)
        `ajout ou retrait du nombre de jours au lundi
        $0:=$0+$3
    Sinon
        `un jour de la semaine valide
        $0:=$0+$3-2+(7*Num($3=1))
    Fin de si

Fin de si

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2005 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.