[VBScript] numéro de semaine

Résolu/Fermé
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 19 mai 2005 à 14:24
 babou - 10 avril 2015 à 08:31
Bonjour a tous et toutes !! C'est encore moi !! ^^

Voila ce coup-ci je voudrais savoir si il existe une fonction de VBScript qui retourne le numéro de semaine en cours.
J'ai déja trouvé pour :
- le jour -->
 jour = day(now)

- le mois -->
 mois = month(now)

- l'année -->
 annee = year(now)


Est-ce qu'il existe une fonction dans le genre :
 semaine=week(now)
( Mais ça, ça marche pô !! )

Voila merci d'avance !!

8 réponses

Plus simple que ca, on peut utiliser la version format présente dans VBA, qui peut se conformer à la norme iso.
Exemple:

Dim datetest, semaine

datetest = #23/7/2010#
semaine = Format(datetest, "ww", vbMonday, vbFirstFourDays)


Dans ce cas, Format renvoie 29, ce qui est la bonne réponse.
L'argument vbMonday définit le premier jour de la semaine (selon la norme, Lundi, mais dimanche par défaut pour VBA si l'argument est omis) et vbFirstFourDays définit que la semaine n°1 est la première semaine contenant au moins 4 jour (soit la semaine contenant le 1er jeudi de l'année, c'est équivalent; si l'argument est omis, VBA considère que c'est la semaine du 1er janvier, ce qui n'est pas toujours exact)

On peut bien sur utiliser des variables pour définir la date, en utilisant la fonction CDate:

Dim jour, mois, annee
Dim datetest, semaine

jour = 23
mois = 7
annee = 2010
datetest = CDate(jour & "/" & mois & "/" & annee)
semaine = Format(datetest, "ww", vbMonday, vbFirstFourDays)


On peut aussi n'utiliser que les 2 derniers chiffres de l'année, VBA considère alors que l'année est comprise entre 1930 et 2029


Note à part, la fonction Format permet de mettre en forme une date (entre autres), c'est l'argument "ww" qui fait qu'il renvoie le numéro de la semaine. En le remplacant par exemple par "dddd d mmmm yyyy", la fonction retourne dans notre exemple "vendredi 32 juillet 2010"
36
Il suffit de changer le dernier argument :
semaine = Format(DD, "ww", vbMonday, vbFirstJan1)
0