PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Semaine d'un mois
Semaine d'un mois
Débuté par Stéphane D., 08 jan. 2025 18:02 - 8 réponses
Membre enregistré
176 messages
Posté le 08 janvier 2025 - 18:02
Bonjour à tous,
Je voudrais savoir comment récupérer les numéros de semaines pour un mois donnée.
Exemple :
Mois de Février 6/7/8/9 et non pas 5/6/7/8/9
Merci d'avance.

--
Stéphane.
Membre enregistré
20 messages
Posté le 09 janvier 2025 - 09:43
Bonjour,

Il existe deux fonctions pour ça DateVersNumeroDeSemaine() et NuméroDeSemaine() pour utiliser la norme ISO 8601.
La semaine commence un lundi par défaut donc sur février c'est forcement 6/7/8/9

--
Cdlt
Membre enregistré
51 messages
Posté le 09 janvier 2025 - 09:51
Bonjour Stéphane, bonjour à tous,

Le premier jour de février est dans la semaine n°5.
Le dernier jour de février est dans la semaine n°9.

Si tu souhaites avoir les numéro de semaine du premier mercredi du mois de février, il faut calculer cette date. Tu auras alors le n° de semaine conforme à cette règle de gestion.

En espérant avoir un peu aidé.


Stéphane D. a écrit :
Bonjour à tous,
Je voudrais savoir comment récupérer les numéros de semaines pour un mois donnée.
Exemple :
Mois de Février 6/7/8/9 et non pas 5/6/7/8/9
Merci d'avance.

--
Stéphane.
Membre enregistré
176 messages
Posté le 09 janvier 2025 - 11:50
Bonjour et merci de vos réponse.
SC ( COSOGES ) et fpy :
On pourrais retrouver le premier Lundi du mois mais le problème reste sur le mois de Avril qui est le 7/04 et donc je perds la semaine 14.

Je vous explique un peu plus ma demande.
J'ai une combo avec les mois de l'année renseigné.
Quand l'utilisateur sélectionne un mois dans cette combo, je voudrais récupérer les numéros de semaines afin de faire une requête pour récupérer les éléments dans ma bdd suivant les numéros de semaines renvoyés.
Exemple :
Février : 6/7/8/9
Avril : 14/15/16/17/18

Et encore merci pour votre aide à tous.

--
Stéphane.
Membre enregistré
20 messages
Posté le 09 janvier 2025 - 12:19
Salut,

Pour la dernière semaine du mois tu calcule le nombre de jours restant jusqu'à la fin du mois, et s'il est inférieur à n tu ne le prend pas dans ton résultat mais le reporte sur le mois d'après.
Tu peux utiliser pour ça : SemaineVersDate() qui renvoie la date du lundi de la semaine passée en paramètre.
Espérant que ça t'aide un peu.

--
Cdlt
Membre enregistré
2 134 messages
Posté le 09 janvier 2025 - 13:42
Bonjour,

Voir aussi PremierJourDuMois() et DernierJourDuMois().

--
Bon dev,
Jean-Pierre
Membre enregistré
886 messages
Posté le 09 janvier 2025 - 13:58
Bonjour,

Une petite procédure globale simple parmis tant d'autres possibles :

- Passer le mois et l'année en paramètre
- Séparateur des Num semaines en sortie pris en exemple avec <TAB>

Procedure PG_RenvoiNumSemaines(nLemois est un entier,nLannee est un entier)

// Déclaration des variables
dDateDebut est une Date
dDAtefin est une Date
nbjour est un entier
sLesNumSemaines est une chaîne
CleSemaine est une chaîne

//Formatage de la date de début
dDateDebut..Année = nLannee ; dDateDebut..Mois = nLemois; dDateDebut..Jour = 1

// Dernier jour du mois
dDAtefin = DernierJourDuMois(dDateDebut)

// Nombre de jours du mois/annee concerné
nbjour = dDAtefin..Jour

// Rupture sur le numero de semaine
CleSemaine = DateVersNuméroDeSemaine(dDateDebut)
sLesNumSemaines = CleSemaine

// Boucle sur le nombre de jours
BOUCLE(nbjour)
SI CleSemaine <> DateVersNuméroDeSemaine(dDateDebut) ALORS
CleSemaine = DateVersNuméroDeSemaine(dDateDebut)
sLesNumSemaines = sLesNumSemaines + TAB + CleSemaine
FIN
dDateDebut..Jour++
FIN


Bonne découverte, test, et/ou utilisation ...
Christian
Membre enregistré
176 messages
Posté le 09 janvier 2025 - 15:20
Re- Et encore merci à tous.
En vu des difficultés rencontrés, je vais mettre en bdd les éléments Janvier=1/2/3/4/5 Février=6/7/8/9 ...
Pour info Christian, lorsque j'utilise ta procédure, si je prends le mois de Février il me renvoi 5/6/7/8/9 et non 6/7/8/9
J'avais fais un peu près la même chose mais codé différemment.
En regardant le calendrier de 2025 vous pouvez voir les numéros de semaines des mois en cours.

Mais si vous avez encore un peu de temps et d'idée.

Encore merci pour votre aide.

--
Stéphane.
Membre enregistré
886 messages
Posté le 09 janvier 2025 - 15:39
Le 1er février, soit le samedi fait partie de la semaine 5 !
Si il faut démarrer au jour JJJJJJJJ ( lundi, mardi etc ... ) pas bien compliqué de démarrer avec ce premier jour concerné.
Sans passer par un bdd ...
Message modifié, 09 janvier 2025 - 15:45