Premier jour semaine (avec annee et numero semaine)

Signaler
Messages postés
10
Date d'inscription
mardi 25 juin 2002
Statut
Membre
Dernière intervention
6 janvier 2005
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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
Messages postés
1
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
10 janvier 2005

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 !!!!!!!!! :(((
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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