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:

JCGL

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

Bonjour à tous,

Le dit TongTong résume assez bien ce que je pense:

tontong -3 mars 2016 à 20:34
Il n'y a pas de classement, seulement des bénévoles sur un forum d'entraide. La plus belle performance c'est la pluralité et la complémentarité des réponses. L'important c'est de n'oublier personne dans les remerciements.

A+ à tous
 

job75

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

Re,

Pour terminer il est bon de préciser que le nombre de caractères d'une formule n'a généralement aucune importance.

Ce qui est intéressant c'est de déterminer le "poids" en octets d'une formule.

Celle de Monique au post #48 "pèse" 36 octets, on ne peut probablement pas faire mieux.

Si l'on remplace AUJOURDHUI() par une référence de cellule (A1) ou un nom défini le "poids" est de 40 octets.

Re-bonne nuit.
 

jmst

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

Re,

Il me semble qu'on aurait pu chercher un peu mieux sur XLD :

https://www.excel-downloads.com/threads/premier-dimanche-de-chaque-mois.71974/

Donc adaptation de la formule de notre chère Monique qui nous a quittés :

Code:
=AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI())+7)
77 caractères, quel classement ?

Bonne nuit.

Es tu sûr quelle correspond à:

si la date n'est pas le 1er dimanche du mois arrondir la date au 1er dimanche du mois suivant, sinon reprendre la date.

soit la progression (une partie)

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

Il me semble quelle donne tous les "dimanche" suivant dans le mois(avec des erreurs, (par ex:le lundi 30 mars 2016 ce n'est pas = 29.03.2016), pas le premier du mois ou futur 1er dimanche du mois suivant !
Elle est comme celle de ci-dessous

=AUJOURDHUI()+CHOISIR(JOURSEM(AUJOURDHUI();2);6;5;4;3;2;1;0)+N("si la date n'est pas un DIMANCHE arrondir la date au DIMANCHE suivant sinon reprendre la date.")
 
Dernière édition:

Modeste geedee

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

Bonsour®
si la date n'est pas le 1er dimanche du mois arrondir la date au 1er dimanche du mois suivant, sinon reprendre la date.

soit la progression (une partie)

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

Es tu sûr ??? ...
;)
le 6/2/2016 n'est pas le 1er dimanche du mois, selon la demande on devrait donc retrouver la date au 1er dimanche du mois suivant
i.e dim. 6 mars 2016 et non dim. 7 février 2016

ce que je comprend de l'hypothèse :
sauf si la date est le la date du 1er dimanche du mois (au quel cas on la reprend) dans tout les autre cas (i.e même avant) on prend la date au 1er dimanche du mois suivant

:p :p :rolleyes:
 

ROGER2327

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

Re...


(...)

Celle de Monique au post #48 "pèse" 36 octets, on ne peut probablement pas faire mieux.

(...)
Code:
=AUJOURDHUI()-JOUR(AUJOURDHUI())+7-MOD(AUJOURDHUI()-JOUR(AUJOURDHUI())-1;7)
33 ?

Code:
=AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI()))
32 ?​


Bonne nuit.


ℝOGER2327
#8227


Mercredi 11 Pédale 143 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXXIV, 1,0035h - chèvre
2016-W09-6T02:24:31Z
 
Dernière édition:

jmst

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

Bonsour®

Es tu sûr ??? ...
;)
le 6/2/2016 n'est pas le 1er dimanche du mois, selon la demande on devrait donc retrouver la date au 1er dimanche du mois suivant
i.e dim. 6 mars 2016 et non dim. 7 février 2016

ce que je comprend de l'hypothèse :
sauf si la date est le la date du 1er dimanche du mois (au quel cas on la reprend) dans tout les autre cas (i.e même avant) on prend la date au 1er dimanche du mois suivant

:p :p :rolleyes:

Bonjour Modeste geedee, j'ai volontairement pris la même phrase:

"si la date n'est pas un DIMANCHE arrondir la date au DIMANCHE suivant sinon reprendre la date."
qui à abouti à cette formule (ente autre modifiable pour un autre jour de la semaine !
=AUJOURDHUI()+CHOISIR(JOURSEM(AUJOURDHUI();2);6;5; 4;3;2;1;0)

Donc ma demande est la même, mais que pour le 1er DIMANCHE du mois en cour
"si la date n'est pas un le 1er DIMANCHE du mois arrondir la date au 1er DIMANCHE suivant sinon reprendre la date."

Du 1.02.2016 au 7.02.2016 afficher 7.02.2016 et à partir du 8.02.2016 afficher 06 mars 2016
 

jmst

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

Re...

Code:
=AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI()))

Bonne nuit.

Bonjour ROGER2327, t'as formule ne correspond pas à ma demande,
ni à "si la date n'est pas un DIMANCHE arrondir la date au DIMANCHE suivant sinon reprendre la date"

Elle donne le premier dimanche du mois en cours par rapport à une date quelconque du mois en cours

=A3-JOUR(A3)+8-JOURSEM(A3-JOUR(A3))

Bonne journée
 

jmst

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

Bonjour les amis,
Je propose :
Code:
=DATE(ANNEE(MAINTENANT());1+MOIS(MAINTENANT());7)-JOURSEM(DATE(ANNEE(MAINTENANT());1+MOIS(MAINTENANT());7);11)
Pierre

Bonjour tatiak, bonjour Pierre

Ta formule donne:
#NOMBRE!
=DATE(ANNEE(A3);1+MOIS(A3);7)-JOURSEM(DATE(ANNEE(A3);1+MOIS(A3);7);11)

Merci pour ton aide
 
Dernière édition:

ROGER2327

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

Re...


Bonjour ROGER2327, t'as formule ne correspond pas à ma demande,
ni à "si la date n'est pas un DIMANCHE arrondir la date au DIMANCHE suivant sinon reprendre la date"

Elle donne le premier dimanche du mois en cours par rapport à une date quelconque du mois en cours

=A3-JOUR(A3)+8-JOURSEM(A3-JOUR(A3))

Bonne journée
J'en suis conscient. Il s'agit d'une réponse à ce message (#49).

Mes propositions sont dans les messages #23 et #26. Mais Victor21 a fait mieux...​


Bonne journée.


ℝOGER2327
#8228


Mercredi 11 Pédale 143 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXXIV, 3,9069h - chèvre
2016-W09-6T09:22:36Z
 

jmst

XLDnaute Junior
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
Bonjour phlaurent55, bonjour Philippe
Ta formule donne
le 1er dimanche du mois SUIVANT du mois en cours

Merci pour t'as participation
 
Dernière édition:

jmst

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

Bonjour le Forum,
Bonjour tout le monde (beaucoup trop pour tous les citer sans en oublier)


avec 235 caractères après je n'ai pas mieux

Code:
=SI(AUJOURDHUI()<=AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI())-7);AUJOURDHUI()-JOUR(AUJOURDHUI())+8-JOURSEM(AUJOURDHUI()-JOUR(AUJOURDHUI())-7);FIN.MOIS(AUJOURDHUI();0)+8-JOURSEM(FIN.MOIS(AUJOURDHUI();0)-7))

Cordialement

Bonjour jocelyn, la formule est correct, mais comme tu le dis, trop longue

Merci pour l'essai
 

job75

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

Bonjour le fil, le forum,

Désolé, prenant le train en marche j'ai cru qu'il fallait déterminer le 1er dimanche du mois en cours :mad:

Alors pour changer voici une petite fonction VBA utilisant la formule de Monique :

Code:
Function PremierDimanche(dat)
1 PremierDimanche = dat - Day(dat) + 8 - Weekday(dat - Day(dat) + 7)
If dat > PremierDimanche Then dat = DateSerial(Year(dat), Month(dat) + 1, 1): GoTo 1
End Function
Fichier joint.

Bonne journée.
 

Pièces jointes

  • Premier dimanche(1).xlsm
    27 KB · Affichages: 92

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla