begin process at 2012 02 09 02:57:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

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

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


 Information sur la source

Note :
8 / 10 - par 5 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date & Heure Niveau :Débutant Date de création :24/09/2003 Vu :5 193

Auteur : IciDEDE

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Pour tous ceux qui galere pour trouver la date du Lundi pour une semaine et une année données. J'ai fait cette fonction car sur le net il n'y a pas grand chose sur le traitement des dates.
Cette fonction fonctionne sur Win 2000, je n'ai pas testé sur les autres OS. (Elle peut etre appliqué dans VBA Excel ou VB)
Le code est assez court et rapide en execution. ;-)

Voilou, A++

Source

  • Function DateLundi(Sem As Integer, Annee As Integer) As Date
  • 'Retrouve la date suivant une semaine demandée
  • Dim X As Integer
  • 'Trouve la position du lundi de la premiere semaine de l'année
  • 'ensuite on le soustrait avec le nb de semaine converti en jour
  • X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6)
  • 'Decale le premier jour de l'annee avec la valeur qu'on a trouvé
  • DateLundi = DateAdd("d", X, "01/01/" & Annee)
  • End Function
Function DateLundi(Sem As Integer, Annee As Integer) As Date
'Retrouve la date suivant une semaine demandée
Dim X As Integer

'Trouve la position du lundi de la premiere semaine de l'année
'ensuite on le soustrait avec le nb de semaine converti en jour
X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6)

'Decale le premier jour de l'annee avec la valeur qu'on a trouvé
DateLundi = DateAdd("d", X, "01/01/" & Annee)
End Function



 Sources de la même categorie

Source avec Zip Source avec une capture LES FONCTIONS DATE PAR L'EXEMPLE. par pasquet78
Source avec Zip Source avec une capture CALENDRIER, MODE D'EMPLOI par pasquet78
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE DIODE AVEC 3 ALARMES ET REMISE À L'HEURE par EhJoe
Source avec Zip Source avec une capture POINTEUSE HORAIRES PAR SEMAINE par VBNoob13
Source avec Zip Source avec une capture HORLOGE À AIGUILLES SIMPLEMENT DANS UN USERFORM EXCEL par bigbe

Commentaires et avis

Commentaire de legion91 le 24/09/2003 17:04:02

Super marche pas sous XP lol non ne t'inquite pas la date est une fonction intégré à VB donc 100% compatible ;-)

Commentaire de IciDEDE le 26/09/2003 11:19:41

Merci du conseille et pour ta note :-)
Je remercie egalement un collegue de travail (Nicoulas) qui m'a guidé lors de ma recherche. ;-)

A++

Commentaire de bleyniel le 23/04/2004 16:44:52

Merci pour cette source, elle m'a vraiment aidé.

Commentaire de jawo2 le 27/05/2004 14:30:19

excellent c'est juste ce que je cherchais

Commentaire de jawo2 le 27/05/2004 14:30:58

excellent c'est juste ce que je cherchais

Commentaire de dav78 le 17/06/2004 11:37:30

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

Commentaire de dav78 le 17/06/2004 11:48:02

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).

Commentaire de nycos62 le 08/07/2004 15:10:13

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 ;)

Commentaire de Jyver le 27/09/2005 13:36:09

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 !

Commentaire de theveny_69 le 05/10/2005 22:56:39

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 !!!

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,505 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales