TROUVE LA DATE DU LUNDI POUR UNE SEMAINE ET UNE ANNÉE DONNÉES

cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010 - 24 sept. 2003 à 17:04
theveny_69 Messages postés 6 Date d'inscription mercredi 5 octobre 2005 Statut Membre Dernière intervention 5 octobre 2005 - 5 oct. 2005 à 22:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/16647-trouve-la-date-du-lundi-pour-une-semaine-et-une-annee-donnees

theveny_69 Messages postés 6 Date d'inscription mercredi 5 octobre 2005 Statut Membre Dernière intervention 5 octobre 2005
5 oct. 2005 à 22:56
Private Sub ok_date_Click()
Me.date_select = Me.calendrier
Me.num_semaine = T.Semaine(Me.calendrier)
DATEDEPART = Me.calendrier
temp = DateAdd("d", -Weekday(DATEDEPART, vbMonday) + 1, DATEDEPART)
End Sub

ceci me semble plus simple !!!
Utilisateur anonyme
27 sept. 2005 à 13:36
Bonjour,

A la ligne :
X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6)
j'ai rajouté "-7"
elle devient :
X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6) + 7

Là cela marche pour 2005 et 2006 ...
(je suis sous XP) et sous VBA

Voilà sinon super le code j'ai moins eu à réfléchir !
nycos62 Messages postés 11 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 30 juillet 2007
8 juil. 2004 à 15:10
je crois plutot qu'il n'y a pas de semaine 53 en 2004. c'est bel et bien le début de la semaine 1 de 2005.
une année = 52 semaines.
!!!! ta correction fausse les calculs dav78.
a part çà, la fonction DateLundi est super cool. et fonctionne sous VB.Net. merci IciDEDE ;)
cs_dav78 Messages postés 25 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 25 juin 2004
17 juin 2004 à 11:48
Je propose cette modif:
TrouverNuméroSemaine est une fonction trouvé sur ce site, corrigeant le bug de la semaine 53 de l'an 2004. j'ai rajouté un test en fin de la fonction DateLundi.


Public Function TrouverNuméroSemaine(ByVal Dte As Date) As Integer
TrouverNuméroSemaine = Format(Dte, "ww", vbMonday, vbFirstFourDays)
If TrouverNuméroSemaine > 52 Then
If Format(Dte + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
TrouverNuméroSemaine = 1
End If
End If
End Function

Public Function DateLundi(ByVal Sem As Integer, ByVal Annee As Integer) As Date
Dim X As Integer
X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6)
DateLundi = DateAdd("d", X, "01/01/" & Annee)

If TrouverNuméroSemaine(DateLundi) <> Sem Then
'si bug a cause de la semaine 53
DateLundi = DateLundi + 7
End If
End Function


Il semblerait que ça fonctionne. (test de la semaine 1 de 2004 et 2005 OK).
cs_dav78 Messages postés 25 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 25 juin 2004
17 juin 2004 à 11:37
j'ai l'impression que ça ne marche pas pour la premiere semaine de 2005:

il me met le lundi au 27/12/2004 alors que ça c'est la semaine 53 de 2004! Il y a peut etre un bug de la fonction weekday() ??

Pour la premiere semaine de 2004 par contre aucun probleme.

Dav
jawo2 Messages postés 3 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 27 mai 2004
27 mai 2004 à 14:30
excellent c'est juste ce que je cherchais
jawo2 Messages postés 3 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 27 mai 2004
27 mai 2004 à 14:30
excellent c'est juste ce que je cherchais
bleyniel Messages postés 3 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 28 novembre 2007
23 avril 2004 à 16:44
Merci pour cette source, elle m'a vraiment aidé.
IciDEDE Messages postés 1 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 26 septembre 2003
26 sept. 2003 à 11:19
Merci du conseille et pour ta note :-)
Je remercie egalement un collegue de travail (Nicoulas) qui m'a guidé lors de ma recherche. ;-)

A++
cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010
24 sept. 2003 à 17:04
Super marche pas sous XP lol non ne t'inquite pas la date est une fonction intégré à VB donc 100% compatible ;-)
Rejoignez-nous