kefir1998
Messages postés38Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention 1 mars 2010
-
24 mars 2009 à 13:11
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
27 mars 2009 à 09:03
bonjour voila le code mais
Private Function IsFerie(Date_testee As Date) As Boolean
Dim JJ, AA, MM As Integer
Dim NbOr, Epacte As Integer
Dim PLune, Paques, Ascension, Pentecote As Date
If WeekDay(Date_testee, vbMonday) 6 Or WeekDay(Date_testee, vbMonday) 7 Then IsFerie = True: Exit Function
JJ = Day(Date_testee)
MM = Month(Date_testee)
AA = Year(Date_testee) If JJ 1 And MM 1 Then IsFerie = True: Exit Function '1 Janvier If JJ 10 And MM 4 Then IsFerie = True: Exit Function ' 10 avril vendredi saint If JJ 1 And MM 5 Then IsFerie = True: Exit Function '1 Mai If JJ 8 And MM 5 Then IsFerie = True: Exit Function '8 Mai If JJ 14 And MM 7 Then IsFerie = True: Exit Function '14 Juillet If JJ 15 And MM 8 Then IsFerie = True: Exit Function '15 Août If JJ 1 And MM 11 Then IsFerie = True: Exit Function '1 Novembre If JJ 11 And MM 11 Then IsFerie = True: Exit Function '11 Novembre If JJ 25 And MM 12 Then IsFerie = True: Exit Function '25 Décembre
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = DateSerial(AA, 4, 19) - ((Epacte + 6) Mod 30) If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
Paques = PLune - WeekDay(PLune) + vbMonday + 7 'Paques If JJ Day(Paques) And MM Month(Paques) Then IsFerie = True: Exit Function
Ascension = Paques + 38 'Ascension If JJ Day(Ascension) And MM Month(Ascension) Then IsFerie = True: Exit Function
Pentecote = Ascension + 11 'Pentecote If JJ Day(Pentecote) And MM Month(Pentecote) Then IsFerie = True: Exit Function
IsFerie = False
End Function
Function JPlusNbJour(Date_testee As Date, NbJour As Integer)
Dim DateCalc As Date, SamDim As Integer
DateCalc = DateAdd("w", 1, Date_testee) 'Voir si sous 97 il ne faut remplacer d par j
If IsFerie(DateCalc) = True Then
While IsFerie(DateCalc) = True
DateCalc = DateAdd("w", 1, DateCalc) 'Voir si sous 97 il ne faut remplacer d par j
Wend
JPlusNbJour = DateCalc
Else
JPlusNbJour = DateCalc
End If
End Function
Function JPlusNbJour1(Date_testee As Date, NbJour As Integer)
Dim DateCalc1 As Date, SamDim As Integer
DateCalc1 = DateAdd("w", 3, Date_testee) 'Voir si sous 97 il ne faut remplacer d par j
If IsFerie(DateCalc1) = True Then
While IsFerie(DateCalc1) = True
DateCalc1 = DateAdd("w", 3, DateCalc1) 'Voir si sous 97 il ne faut remplacer d par j
Wend
JPlusNbJour1 = DateCalc1
Else
JPlusNbJour1 = DateCalc1
End If
End Function
Private Sub date_enregistrement_AfterUpdate() 'A mettre sur "apres mise a jour" du controle date_enregistrement
datesaisie = JPlusNbJour(date_enregistrement, 1)
date_valeur_BDF = JPlusNbJour(datesaisie, 1)
datej3 = JPlusNbJour1(datesaisie, 3)
voila mes lignes de commande les date se mette a jour du lundi au mercredi et le vendredi parcontre le jeudi il ne veux pas appliquer la formule suivante datej3 = JPlusNbJour1(datesaisie, 3)
merci pour votre aide