Premier jour semaine (avec annee et numero semaine)

cs_joan Messages postés 10 Date d'inscription mardi 25 juin 2002 Statut Membre Dernière intervention 6 janvier 2005 - 6 janv. 2005 à 09:57
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 10 janv. 2005 à 15:08
Bonjour

En 2004 j'ai utilise une fonction permettant de trouver le premier jour de la semaine en passant en paramètre une annee et un numéro de semaine Lorsque j'utilise ce calcul pour l'annee 2005, j'ai un décalage d'une semaine
Pouvez vous m'aider sur ce sujet
Merci
Voila la fonction utilisé :
Function Prem_joursem(S, Annee)
'calcule le premier jour de la semaine de parachèvement
Dim A, L A (Annee - 12) Mod 28 ' (12 2000 mod 28 ) If A 0 Then A 28

Dim PeriodeJour(28), j, t
j = 6


For t = 1 To A j (j + 1 - ((t - 1) Mod 4 0 And t > 1)) Mod 7
PeriodeJour(t) = j
Next


Dim Lundi
Lundi = S * 7 - PeriodeJour(A) - 6
If Lundi < 0 Then
L = 31 + Lundi & "/" & 12 & "/" & Annee - 1
Else
Dim JourParMois(12)
JourParMois(1) = 31 JourParMois(2) 28 - ((A Mod 4) 0)
JourParMois(3) = 31
JourParMois(4) = 30
JourParMois(5) = 31
JourParMois(6) = 30
JourParMois(7) = 31
JourParMois(8) = 31
JourParMois(9) = 30
JourParMois(10) = 31
JourParMois(11) = 30
JourParMois(12) = 31


Dim Mois
j = 1
Mois = 1

While Lundi > JourParMois(j)
Lundi = Lundi - JourParMois(j)
j = j + 1
Mois = Mois + 1
Wend
L = Lundi & "/" & Mois & "/" & Annee

End If

Prem_joursem = DateAdd("d",-4,L)

End Function
joan59

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
6 janv. 2005 à 13:38
Tient en VB.net ca doit donner un truc comme ca



Dim FirstDayYear As DateTime = DateTime.Parse("03/01/2005")

Dim FirstDayWeek() As DateTime, i As Integer = 1



Do Until FirstDayWeek(i).Year > 2005

FirstDayYear.AddDays(7)

FirstDayWeek(i) = FirstDayYear

i += 1

Loop



ensuite t'appelle FirstDayWeek avec le numéro de la semaine, ca te
retourne un DateTime et la c'est facile de retrouver le numéro du jour
correspondant.



J'ai regardé ta fonction, elle me semble bien compliqué, tu peux pas
faire un truc de mon genre ? en vbs ca risque de planter sur le
adddays(7) mais pour ca il suffirait de gérer un tableau comme ceci

dim JourMois() as integer = { 31, 28, 31, 30, ....}



ensuite avec JourMois(3) t'aura le nombre de jour dans mars, et quand
t'additionnes tu regarde dans quel moi tu es t'ajoute 7 si t'es au
dessous etc... je pense qu'une approche comme ca, serait plus facile.



Et puis sinon tu passes à asp.net ce qui te permet d'avoir une tres grande facilité pour faire ta fonction.

Peut etre l'occasion de passer à .net




<hr style="width: 100%; height: 2px;">Cyril
0
jgoncalves Messages postés 1 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 10 janvier 2005
10 janv. 2005 à 14:56
Argggggg! Je n'ai que Access2000 et le code que jesusonline a si gentillement offert, ma version ne la comprend pas.. :((((
Y aurait-il une âme généreuse pour me le traduir dans ce language? Sinon je crois que je n'est plus qu'a me pendre....
Je sais que je pourrais peut-etre passer a .net mais mon boss n'est pas de cet avis ...
Mais pourquoi n'a-t-on pas commencé cette semaine 1 le 1er !!!!!!!!! :(((
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 janv. 2005 à 15:08
Va voir sur VBFrance.com la bas eux non plus ils sont pas encore bien passé à .net et puis ton problème est plus spécifique à VB qu'a asp



moi je suis incapable de faire ce que j'ai fait en vb.



@+

<!--StartFragment -->
<hr>
Cyril
0
Rejoignez-nous