Calcul du numéro des week ends dans le mois (DVH 1/3/5)

fmichaud76

XLDnaute Nouveau
Bonjour

Tout d'abord une courte présentation. Je suis un papa bientôt divorcé, avec 2 enfants. Je suis en train de mettre au point un logiciel (gratuit, libre de droits mais pas sous Excel) qui permettra de gérer les plannings de garde des enfants, sujet qui génère de très nombreuses querelles dans les couples divorcés tant les juges prennent un malin plaisir à fabriquer des règles alambiquées et sujettes à interprétations (mais c'est un autre débat). On distingue principalement deux types de gardes d'enfants, les résidences alternées (l'enfant passe alternativement d'un parent à l'autre à intervales réguliers), ou la résidence exclusive chez un parent, l'autre ayant un "Droit de Visite et d'Hebergement' (DVH). Mon post concerne le DVH.


Les droits de visite et d'hébergement (DVH) des enfants de parents divorcés sont souvent régis par la la règle dite des "week ends 1 3 5".

Le parent qui a le DVH peut ainsi prendre ses enfants les 1er, 3eme et 5eme week-end de chaque mois, sachant qu'un week end est compris dans ledit mois si le samedi (ou parfois le vendredi) est dans ce mois. Par exemple, si le samedi est le 31 mai, alors le dimanche 1 juin fait partie du 5ème week end de mai.

Voici la question que je pose, je cherche une réponse en utilisant exclusivement des fonctions Excel et non de la programmation en VBA :

connaissant une date, par exemple saisie dans la cellule A1, retourner une valeur dans la cellule B1 qui est :
0 si ce jour n'est pas un week-end (ni un samedi, ni un dimanche)
n si ce jour est un samedi ou un dimanche, n étant le n° du week end dans le mois (n pouvant prendre les valeurs 1 à 5).​

Certains jugements de divorce indiquent que la prise en charge commence le vendredi soir, donc que le week-end commence ce jour là. Par exemple, si le 31 mai est un vendredi, alors les 1 et 2 juin appartiennent au 5e week-end de mai. D'où la deuxième question :

connaissant une date, par exemple saisie dans la cellule A1, retourner une valeur dans la cellule B1 qui est :
0 si ce jour n'est pas un week-end (ni un vendredi, ni un samedi, ni un dimanche)
n si ce jour est un vendredi, samedi ou dimanche, n étant le n° du week end dans le mois (n pouvant prendre les valeurs 1 à 5).​

Je pense que des personnes ont déjà étudié ce problème, car cette définition est très courante dans les jugements de divorce, bien que sa résolution algo ne soit pas simple ... et qu'elle génère de nombreuses querelles au sein des parents divorcés, mais c'est un autre débat.

Donc si quelqu'un a une réponse sans avoir recours à VBA, ce serait très sympa de la faire partager.

Merci

Fred

PS: j'ai créé il y a un bon moment une librairie de fonctions (programmé en VBA) pour étendre les capacités d'Excel avec les dates d'avant 1900 ainsi que la gestion des calendriers Julien, Grégorien et Républicain, et les styles de dates. Voir mon site GeneaMichaud : Rubrique Téléchargements - Addin / Macro Excel calDate.xla
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Bonsoir fmichaud76
Pas certain d'avoir tout compris. A tout hasard, un essai pour la première question.
Code:
[COLOR="DarkSlateGray"][B]=SI(JOURSEM(F1;2)<6;0;ENT((JOUR(F1-(JOURSEM(F1;2)>6))-JOURSEM(F1-(JOURSEM(F1;2)>6)+1))/7)+1)[/B][/COLOR]
ROGER2327
#2708
 

fmichaud76

XLDnaute Nouveau
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Merci Roger2327, la formule semble bien fonctionner. Elle gère bien les weekends à cheval sur 2 mois.

Pour être plus clair dans ma première question, avec le début du we le samedi, prenons le cas du mois de juillet de cette année 2010.

01/07/2010 jeu
02/07/2010 ven
03/07/2010 sam => weekend n°1 de juillet
04/07/2010 dim => weekend n°1 de juillet
05/07/2010 lun
06/07/2010 mar
07/07/2010 mer
08/07/2010 jeu
09/07/2010 ven
10/07/2010 sam => weekend n°2 de juillet
11/07/2010 dim => weekend n°2 de juillet
12/07/2010 lun
13/07/2010 mar
14/07/2010 mer
15/07/2010 jeu
16/07/2010 ven
17/07/2010 sam => weekend n°3 de juillet
18/07/2010 dim => weekend n°3 de juillet
19/07/2010 lun
20/07/2010 mar
21/07/2010 mer
22/07/2010 jeu
23/07/2010 ven
24/07/2010 sam => weekend n°4 de juillet
25/07/2010 dim => weekend n°4 de juillet
26/07/2010 lun
27/07/2010 mar
28/07/2010 mer
29/07/2010 jeu
30/07/2010 ven
31/07/2010 sam => weekend n°5 de juillet
01/08/2010 dim => weekend n°5 de juillet (et non 1er we d'août)
02/08/2010 lun
03/08/2010 mar
04/08/2010 mer
05/08/2010 jeu
06/08/2010 ven
07/08/2010 sam => weekend n°1 d'août
08/08/2010 dim => weekend n°1 d'août
...

Pour la 2e question, avec le début du we le vendredi, prennons le mois d'avril 2010 :

01/04/2010 jeu
02/04/2010 ven => weekend n° 1 d'avril
03/04/2010 sam => weekend n° 1 d'avril
04/04/2010 dim => weekend n° 1 d'avril
05/04/2010 lun
06/04/2010 mar
07/04/2010 mer
08/04/2010 jeu
09/04/2010 ven => weekend n° 2 d'avril
10/04/2010 sam => weekend n° 2 d'avril
11/04/2010 dim => weekend n° 2 d'avril
12/04/2010 lun
13/04/2010 mar
14/04/2010 mer
15/04/2010 jeu
16/04/2010 ven => weekend n° 3 d'avril
17/04/2010 sam => weekend n° 3 d'avril
18/04/2010 dim => weekend n° 3 d'avril
19/04/2010 lun
20/04/2010 mar
21/04/2010 mer
22/04/2010 jeu
23/04/2010 ven => weekend n° 4 d'avril
24/04/2010 sam => weekend n° 4 d'avril
25/04/2010 dim => weekend n° 4 d'avril
26/04/2010 lun
27/04/2010 mar
28/04/2010 mer
29/04/2010 jeu
30/04/2010 ven => weekend n° 5 d'avril
01/05/2010 sam => weekend n° 5 d'avril (et non 1er we de mai)
02/05/2010 dim => weekend n° 5 d'avril (et non 1er we de mai)
03/05/2010 lun
04/05/2010 mar
05/05/2010 mer
06/05/2010 jeu
07/05/2010 ven => weekend n° 1 de mai
08/05/2010 sam => weekend n° 1 de mai
09/05/2010 dim => weekend n° 1 de mai
...
 

ROGER2327

XLDnaute Barbatruc
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Re...
Voici des formules plus simples pour
  • décompte à partir du vendredi (pour une date en B3)
    Code:
    [COLOR="DarkSlateGray"][B]=(JOURSEM(B3;2)>[COLOR="Red"]4[/COLOR])*ENT((JOUR(B3+([COLOR="Red"]5[/COLOR]-JOURSEM(B3;2)))-1)/7+1)[/B][/COLOR]
  • décompte à partir du samedi (pour une date en B3)
    Code:
    [COLOR="DarkSlateGray"][B]=(JOURSEM(B3;2)>[COLOR="Red"]5[/COLOR])*ENT((JOUR(B3+([COLOR="Red"]6[/COLOR]-JOURSEM(B3;2)))-1)/7+1)[/B][/COLOR]
Classeur joint : mettre l'année en B2 pour avoir le calendrier sur une année.​
ROGER2327
#2716
 

Pièces jointes

  • fmichaud76_2716.zip
    13.5 KB · Affichages: 310
Dernière édition:

fmichaud76

XLDnaute Nouveau
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Merci Roger,

Plus généralement :

=(JOURSEM(date;2)>=jour)*(ENT((JOUR(date+(jour-JOURSEM(date;2)))-1)/7)+1)

en anglais :

=(WEEKDAY(date;2)>=jour)*(INT((DAY(date+(jour-WEEKDAY(date;2)))-1)/7)+1)

Avec :
- date : la date pour laquelle on recherche la valeur
- jour : le premier jour du week end (5 pour vendredi, 6 pour samedi)


A+

Fred
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Suite...
Le message précédent #6 est devenu incompréhensible depuis la modification du message #5.
En fait, l"erreur" suspectée portait sur une formule de la forme

=x*ENT(d+n)​
qu'il aurait fallu corriger en
=x*(ENT(d)+n)​
Exactement, la formule suspecte était
Code:
[COLOR="DarkSlateGray"][B]=(JOURSEM(A2;2)>4)*ENT((JOUR(A2+(5-JOURSEM(A2;2)))-1)/7+1)[/B][/COLOR]
la formule correcte étant
Code:
[COLOR="DarkSlateGray"][B]=(JOURSEM(A2;2)>=5)*[COLOR="Red"]([/COLOR]ENT((JOUR(A2+(5-JOURSEM(A2;2)))-1)/7[COLOR="Red"])[/COLOR]+1)[/B][/COLOR]
Les deux formules ne sont effectivement pas équivalentes si les nombres traités sont quelconques.
Par exemple, =2*ENT(3,3+0,5) renvoie 6, alors que =2*(ENT(3,3)+0,5) renvoie 7.

Toutefois, pour n entier, ENT(d+n) est égal à ENT(d)+n quel que soit d.
Donc, dans le cas traité ci-dessus, les deux formules sont valables puisque n=1.
La première étant plus courte, autant la conserver.
Finalement, la formulation du message #5 corrigé est excellente et fournit une bonne synthèse : merci à fmichaud76.​
ROGER2327
#2721
 

fmichaud76

XLDnaute Nouveau
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Mais c'est moi qui te remercie Roger2327 ;)

...j'ai corrigé mon post #5 car la parenthèse entre le ENT et le 7 manquait. Comme ça on pourra gérer les dates qui contiennent des heures (partie décimale).
 

ROGER2327

XLDnaute Barbatruc
Re : Calcul du numéro des week ends dans le mois (DVH 1/3/5)

Re...
Pour deux parenthèses en moins...
Code:
[COLOR="DarkSlateGray"][B]=(JOURSEM(date;2)>=jour)*ENT((JOUR(date+jour-JOURSEM(date;2))-1)/7+1)[/B][/COLOR]
...qui fonctionne aussi avec une date à partie décimale.
ROGER2327
#2724
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 078
Membres
103 455
dernier inscrit
saramachado