Trouver tous les jours de semaine précisés dans une année
Publié : lun. 28/nov./2016 8:50
Bonjour à tous,
J'aimerais à la place de saisir le numéro d'ordre du jour recherché, saisir son nom (dimanche..samedi).
Ne sachant pas comment je pourrais faire, je viens solliciter votre aide bienveillante, car je sais que je serai bien aiguillé et je vous en remercie tous par anticipation.
J'aimerais à la place de saisir le numéro d'ordre du jour recherché, saisir son nom (dimanche..samedi).
Ne sachant pas comment je pourrais faire, je viens solliciter votre aide bienveillante, car je sais que je serai bien aiguillé et je vous en remercie tous par anticipation.
Code : Tout sélectionner
Procedure.s TrouverPremierJourSemaine(Annee, Mois, Joursem)
Protected Jour=1
Protected DatePremierJourSemaine=Date(Annee, Mois, Jour, 0, 0, 0)
;Cherche le premier JourSemaine
While DayOfWeek(DatePremierJourSemaine)<>Joursem
jour + 1
DatePremierJourSemaine= Date(Annee, mois, jour, 0, 0, 0)
Wend
ProcedureReturn FormatDate("%dd/%mm/%yyyy", DatePremierJourSemaine)
EndProcedure
Procedure.s TrouverDeuxiemeJourSemaine(Annee, Mois, Joursem)
Protected Jour=8
Protected DateDeuxiemeJourSemaine=Date(Annee, Mois, Jour, 0, 0, 0)
;Cherche le deuxième JourSemaine
While DayOfWeek(DateDeuxiemeJourSemaine)<>Joursem
jour + 1
DateDeuxiemeJourSemaine= Date(Annee, mois, jour, 0, 0, 0)
Wend
ProcedureReturn FormatDate("%dd/%mm/%yyyy", DateDeuxiemeJourSemaine)
EndProcedure
Procedure.s TrouverTroisiemeJourSemaine(Annee, Mois, Joursem)
Protected Jour=15
Protected DateTroisiemeJourSemaine=Date(Annee, Mois, Jour, 0, 0, 0)
;Cherche le Troisième JourSemaine
While DayOfWeek(DateTroisiemeJourSemaine)<>Joursem
jour + 1
DateTroisiemeJourSemaine= Date(Annee, mois, jour, 0, 0, 0)
Wend
ProcedureReturn FormatDate("%dd/%mm/%yyyy", DateTroisiemeJourSemaine)
EndProcedure
Procedure.s TrouverQuatriemeJourSemaine(Annee, Mois, Joursem)
Protected Jour=22
Protected DateQuatriemeJourSemaine=Date(Annee, Mois, Jour, 0, 0, 0)
;Cherche le Quatrième JourSemaine
While DayOfWeek(DateQuatriemeJourSemaine)<>Joursem
jour + 1
DateQuatriemeJourSemaine= Date(Annee, mois, jour, 0, 0, 0)
Wend
ProcedureReturn FormatDate("%dd/%mm/%yyyy", DateQuatriemeJourSemaine)
EndProcedure
Procedure.s TrouverCinquiemeJourSemaine(Annee, Mois, Joursem)
Protected Jour = JoursDansMois(Annee, Mois)
Protected DateCinquiemeJourSemaine
;Chercher le CinquiemeJourSemaine
DateCinquiemeJourSemaine = AddDate(ParseDate("%dd/%mm/%yyyy", TrouverQuatriemeJourSemaine(Annee, Mois, Joursem)), #PB_Date_Week, 1)
If Val(Mid(FormatDate("%dd/%mm/%yyyy", DateCinquiemeJourSemaine), 4, 2)) = Mois
ProcedureReturn FormatDate("%dd/%mm/%yyyy", DateCinquiemeJourSemaine)
Else
ProcedureReturn ""
EndIf
EndProcedure
Question:
Annee = Val(InputRequester("Du premier au dernier " + JourSemaine$, "Quelle année ? 1970-2037", Str(Year(Date()))))
If annee < 1970 Or Annee > 2037
Goto Question
EndIf
Debug "Tous les " + JourSemaine$ + "s de " + Annee + #CRLF$
For i = 1 To 12
Global PremierJourSemaine.s = TrouverPremierJourSemaine(Annee, i, JourSemaine)
Global DeuxiemeJourSemaine.s = TrouverDeuxiemeJourSemaine(Annee, i, JourSemaine)
Global TroisiemeJourSemaine.s = TrouverTroisiemeJourSemaine(Annee, i, JourSemaine)
Global QuatriemeJourSemaine.s = TrouverQuatriemeJourSemaine(Annee, i, JourSemaine)
Global CinquiemeJourSemaine.s = TrouverCinquiemeJourSemaine(Annee, i, JourSemaine)
Global texte$ = PremierJourSemaine + " " + DeuxiemeJourSemaine + " " + TroisiemeJourSemaine + " " + QuatriemeJourSemaine + " " + CinquiemeJourSemaine
Debug texte$
Next i