le premier dimanche du mois, reprendre la date

jmst

XLDnaute Junior
Bonjour,
je cherche une formule qui serait:
"si la date est inférieur ou égal au le 1er dimanche du mois en cours, afficher le 1er dimanche du mois en cours, si la date est supérieur au 1er dimanche du mois en cours, afficher le 1er dimanche du mois suivant"



Il y a une formule:
si la date n'est pas le 1er du mois , arrondir la date au 1er du mois suivant sinon reprendre la date, mais je n'arrive pas à la modifier pour le 1er dimanche


=SI(AUJOURDHUI()=DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+0;1);AUJOURDHUI();DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1))

La progression souhaitée:

sam 02.janv.2016--> dim 03.janv.2016
dim 03.janv.2016--> dim 03.janv.2016
lun 04.janv.2016--> dim 07.févr.2016

sam 06.févr.2016--> dim 07.févr.2016
dim 07.févr.2016--> dim 07.févr.2016
lun 08.févr.2016--> dim 06.mars.2016

sam 05.mars.2016--> dim 06.mars.2016
dim 06.mars.2016--> dim 06.mars.2016
lun 07.mars.2016--> dim 03.avr.2016

etc


Merci pour votre aide

Les meilleurs réponse

Re : le premier dimanche du mois, reprendre la date
Citation Envoyé par Victor21
Bonjour à tous.

"=SI(JOUR(A1+7-JOURSEM(A1;2))<=7;A1+7-JOURSEM(A1;2);DATE(ANNEE(A1);MOIS(A1)+1;1)+7-
JOURSEM(DATE(ANNEE(A1);MOIS(A1)+1;1);2))"


130 car. avec $A1, 122 car. avec A1
Vous pouvez également utiliser des noms définis pour les termes récurrents.

Victor21
la formule est correct et une performance à relever: de 1900 au 5.12.9999
Hors en dessous du 1 mars 1900 (voir page 4 )
Avec si: A1 122 caractères et avec AUJOURDHUI() 202 caractères !

Une autre aussi performante

De Tontong - 3 mars 2016 à 16:57
avec un petit effort:
=SI(JOUR(A1+7-JOURSEM(A1;2))<=7;A1+7-JOURSEM(A1;2);FIN.MOIS(A1;0)+8-JOURSEM(FIN.MOIS(A1;0)+1;2))

Et une autre aussi performante

la formule est correct et une performance à relever: de 1900 au 9999
Hors en dessous du 1 mars 1900 et depuis le 6.12.9999 où elle conserve la date du 5.12.9999 à la place de donner #NOMBRE! puisque EXCEL ne peut pas afficher: Dimanche 2 janvier 10000

de job75 Une formule dérivée de la formule de Monique :
164 caractères =-RECHERCHE(-AUJOURDHUI();JOUR(FIN.MOIS(AUJOURDHUI();{1;0}))-FIN.MOIS(AUJOURDHUI();{1;0})-8+JOURSEM(FIN.MOIS(AUJOURDHUI();{1;0})-JOUR(FIN.MOIS(AUJOURDHUI();{1;0}))))
114 caractères =-RECHERCHE(-a3;JOUR(FIN.MOIS(a3;{1;0}))-FIN.MOIS(a3;{1;0})-8+JOURSEM(FIN.MOIS(a3;{1;0})-JOUR(FIN.MOIS(a3;{1;0}))))

Le FUN de job75

La solution de tontong est de loin la meilleure.


Mais en nombre de caractères on peut l'améliorer en utilisant des matrices :

Code :
=-RECHERCHE(-AUJOURDHUI();JOURSEM(FIN.MOIS(AUJOURDHUI();{0;-1})+1;2)-FIN.MOIS(AUJOURDHUI();{0;-1})-8)
115 octets - 101 caractères.

Code :
=-RECHERCHE(-A3;JOURSEM(FIN.MOIS(A3;{0;-1})+1;2)-FIN.MOIS(A3;{0;-1})-8)
117 octets - 71 caractères.


Bravo et magnifique performance de ces trois internautes

PS le faite de remplacer A1 ou A3 par AUJOURDHUI() est de la rendre autonome dans un calendrier:D
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

Bonjour

avec cette formule
=SI(JOURSEM(AUJOURDHUI();2)=7;AUJOURDHUI();AUJOURDHUI()+7-JOURSEM(AUJOURDHUI();2))

ca te donne le dimanche suivant.. du mois en cours....

pour avoir le 1er dimanche du mois suivant....euh. je cherche et je reviens :-D
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : le premier dimanche du mois, reprendre la date

Bonjour à tous,
Code:
=SI(JOURSEM(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1))=1;DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1);DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;9-JOURSEM(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1))))

à+
Philippe
 

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

Rectification.....

avec en B2, la date testée (aujourdhui par exemple)



=SI(ET(JOURSEM(B2;2)=7;JOUR(B2)<=7);B2;DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1)+7-JOURSEM(DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1);2))

explications:
ET(JOURSEM(B2;2)=7;JOUR(B2)<=7) teste s'il s'agit d'un dimanche (jour n°7) ET le premier Dimanche: forcément dans les 7premiers jours du mois..
si ok, on met ce jour B2 sinon
pour prendre en compte le changement d'année.. décembre-->Janvier année suivante
on fait un Mois.decaler(B2;1) par exemple sur le 25/12/2016 (c'est bien un dimanche. MAIS pas le premier de décembre) on récupère donc le 25/01/2017
comme on veut le Premier dimanche de Janvier 2017: on on reconstruit le premier jour de cette date
Date(Année(), Mois();1): donne le 01 janvier 2017

et on translate du nombre de jours qui séparent le premier jour d'un dimanche pour retomber sur un Dimanche.
01 janvier est un Dimanche..

si on avait eu un mardi : joursem retournait 2
auquel on ajoutte 7-joursem pour retomber sur le dimanche..

Voila: simple non? :)
 

jmst

XLDnaute Junior
Re : le premier dimanche du mois, reprendre la date

Voici la progression à obtenir

06.02.2016 -> dim 07 février 2016
07.02.2016 -> dim 07 février 2016
08.02.2016 -> dim 06 mars 2016
09.02.2016 -> dim 06 mars 2016
05.03.2016 -> dim 06 mars 2016
06.03.2016 -> dim 06 mars 2016
07.03.2016 -> dim 03 avril 2016
 

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

Ha.. la condition change..
je me demande bien pourquoi on se fatigue à toujours demander un exemple dès le début... ;-)

donc.. c'est un mix entre mes deux formules...

=SI(ET(JOURSEM(B2;2)<=7;JOUR(B2)<=7);B2+7-JOURSEM(B2;2);DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1)+7-JOURSEM(DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1);2))
 

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

J'avais vu. mais j'avais faim :)

=SI(ET(JOUR(B2)<=7;JOURSEM(B2-1;2)<>7);B2+7-JOURSEM(B2;2);DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1)+7-JOURSEM(DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1);2))

pas sur que ca marchera pour toute l'année... faudrait tester
 

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

Bon. je crois que cette fois-ci. on y est..
l'idée:
si le jour testé (B2) est avant le premier dimanche du mois en cours, on prend ce fameux dimanche
sinon, 1er dimanche du mois suivant



=SI(JOUR(MOIS.DECALER(B2;0 )+7-JOURSEM(MOIS.DECALER(B2;0);2))<=7;MOIS.DECALER(B2;0 )+7-JOURSEM(MOIS.DECALER(B2;0);2);DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1)+7-JOURSEM(DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1);2))
 

vgendron

XLDnaute Barbatruc
Re : le premier dimanche du mois, reprendre la date

en simplifiant les Mois.decaler...de 0 mois..

=SI(JOUR(B2+7-JOURSEM(B2;2))<=7;B2+7-JOURSEM(B2;2);DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1)+7-JOURSEM(DATE(ANNEE(MOIS.DECALER(B2;1));MOIS(MOIS.DECALER(B2;1));1);2))
 

jmst

XLDnaute Junior
Re : le premier dimanche du mois, reprendre la date

Merci vgendron , mais ta formule, comme les miennes, elles sont trop grande !

Avec aujourd'hui() il y a 261 caractères


"Bonjour à tous,
j'ai construit cette formule qui semble fonctionner, mais avec 150 caractères

Code:
=SI(A1<=A1-JOUR(A1)+8-JOURSEM(A1-JOUR(A1)-7);A1-JOUR(A1)+8-JOURSEM(A1-JOUR(A1)-7);DATE(ANNEE(A1);MOIS(A1)+1;1)+6-MOD(DATE(ANNEE(A1);MOIS(A1)+1;1)+5;7))

plus courte que ma toute premiere formule 230 caractères

Code:
=SI(A1<=A1-JOUR(A1)+8-JOURSEM(A1-JOUR(A1)-7);A1-JOUR(A1)+8-JOURSEM(A1-JOUR(A1)-7);DATE(ANNEE(A1);MOIS(A1)+1;0)+1-JOUR(DATE(ANNEE(A1);MOIS(A1)+1;0)+1)+8-JOURSEM(DATE(ANNEE(A1);MOIS(A1)+1;0)+1-JOUR(DATE(ANNEE(A1);MOIS(A1)+1;0)+1)-7))


Pour trouver la date du premier Dimanche du mois d'une date en cellule A1
En B1
Code:
=A1-JOUR(A1)+8-JOURSEM(A1-JOUR(A1)-7)

1er Dimanche du mois suivant
En C1
Code:
=DATE(ANNEE(A1);MOIS(A1)+1;1)+6-MOD(DATE(ANNEE(A1);MOIS(A1)+1;1)+5;7)

si
Code:
=SI(A1<=B1;B1;C1)

Mais je remplace A1 par AUJOURDHUI() il y a 280 caractères

Code:
=SI(AUJOURDHUI()<=AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI())-7);AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI())-7);DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1)+6-MOD(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1)+5;7))

Si quelqu'un à plus court ?? MAX 255 caractères
 

Discussions similaires

Statistiques des forums

Discussions
314 636
Messages
2 111 460
Membres
111 150
dernier inscrit
thenoobofmc