[Résolu] déterminer les dates des mercredis d'un mois donné

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
calagreen
Fraîchement OOthentifié
Messages : 7
Inscription : 25 juin 2021 09:39

[Résolu] déterminer les dates des mercredis d'un mois donné

Message par calagreen »

Bonjour,

Je suis nul en tableur et donc adepte de ce forum qui a jusque-là répondu à toutes mes attentes... :) Pour mon 1er sujet donc, je souhaite déterminer les dates des mercredis d'un mois donné.

A partir d'une date (en E9 dans mon fichier), je souhaite générer la phrase suivante : "livraisons des W, X, Y, et Z MOIS ANNEE" ou "livraisons des V, W, X, Y, et Z MOIS ANNEE" selon le nombre de mercredis dans le mois de la date concernée.
où :
- "W, X, Y et Z" ou "V, W, X, Y, et Z" sont les dates des mercredis (4 ou 5 mercredis dans un mois... c'est précisément là que je coince ! :cry: )
- "MOIS" est le mois de la date concernée
- "ANNEE" est l'année de la date concernée

Avec la date concernée présente en E9,
avec CONCATENER() et TEXTE(), j'ai pu mêler texte et dates,
avec JOUR(), MOIS(), ANNEE() JOURSEM(), j'ai pu calculer les dates du 1er mercredi du mois, du 1er mercredi du mois +7, du 1er mercredi du mois +14, du 1er mercredi du mois +21 et du dernier mercredi du mois,
et je suis arrivé à :shock: :

Code : Tout sélectionner

=CONCATENER("livraisons des ";E9-JOUR(E9)+8-JOURSEM(E9-JOUR(E9)+4)-DATE(ANNEE(E9);MOIS(E9);0);", ";E9-JOUR(E9)+8-JOURSEM(E9-JOUR(E9)+4)-DATE(ANNEE(E9);MOIS(E9);0)+7;", ";E9-JOUR(E9)+8-JOURSEM(E9-JOUR(E9)+4)-DATE(ANNEE(E9);MOIS(E9);0)+14;", ";E9-JOUR(E9)+8-JOURSEM(E9-JOUR(E9)+4)-DATE(ANNEE(E9);MOIS(E9);0)+21;" et ";JOUR(DATE(ANNEE(E9);MOIS(E9)+1;1)-JOURSEM(DATE(ANNEE(E9);MOIS(E9)+1;4)));" ";TEXTE(E9;"MMMM");" ";ANNEE(E9))
Ce qui me donne satisfaction pour ce mois-ci : "livraisons des 2, 9, 16, 23 et 30 juin 2021"
Mais, pour juillet 2021 par exemple, il n'y a que 4 mercredis et ma phrase donne : "livraisons des 7, 14, 21, 28 et 28 juillet 2021"

Comment peut-on générer uniquement les dates des mercredis sans doublons ?
Peut-être pouvez-vous me proposer une solution à partir de ma formule en ajoutant une condition qui exclurait l'éventuelle répétition du 4ème mercredi et du dernier mercredi du mois ?

Je ne crois pas qu'une pj soit utile, vu qu'il n'y a qu'une valeur, la date (en E9 dans mon fichier) qui soit utilisée dans la formule...
Merci à vous ! :wink:
OpenOffice 4.1.10
windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5752
Inscription : 02 janv. 2009 23:56

Re: déterminer les dates des mercredis d'un mois donné

Message par Jean-Louis Cadeillan »

Bonjour et bienvenue sur le forum,
Je me suis contenté de rajouter un test dans ta formule sur le nombre de mercredis du mois, nombre donné, par exemple, par cette formule :

Code : Tout sélectionner

SOMME(JOURSEM(SI(DATE(ANNEE($E$9);MOIS($E$9);LIGNE(A1:A31))>FIN.MOIS($E$9;0);0;DATE(ANNEE($E$9);MOIS($E$9);LIGNE(A1:A31)));2)=3)
Au départ j'avais mis SOMMEPROD() au lieu de SOMME() pour éviter la validation matricielle, mais celle-ci semble obligatoire dans cette formule sous AOO (pas sous LibO).
Voir ci-joint en A2,
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
calagreen
Fraîchement OOthentifié
Messages : 7
Inscription : 25 juin 2021 09:39

Re: déterminer les dates des mercredis d'un mois donné

Message par calagreen »

Merci beaucoup Jean-Louis !
Honnêtement, je n'ai pas (encore) tout compris de ta réponse... mais je vais plancher sur les fonctions que je ne connais pas et sur la notion de "validation matricielle"... :marto:
En tout cas, ça marche! :bravo:
OpenOffice 4.1.10
windows 10
calagreen
Fraîchement OOthentifié
Messages : 7
Inscription : 25 juin 2021 09:39

déterminer les dates des mercredis d'un mois do

Message par calagreen »

Bonjour GourOOu,
Au risque de passer pour une gros relou tatillon...

Je remarque que j'ai soit : "livraisons des a, b, c, d et e MOIS ANNEE" ou "livraisons des a, b, c, d MOIS ANNEE" (pas de "et" dans le 2ème cas...)
J'en déduis que la condition de ta formule exclue le dernier mercredi du mois (avec le "et" qui précède) en cas de doublon avec le 4ème mercredi du mois.

Or, j'aurais voulu avoir : "livraisons des a, b, c, d et e MOIS ANNEE" ou "livraisons des a, b, c et e MOIS ANNEE"
Il faudrait donc que la condition exclue le 4ème mercredi en cas de doublon avec le dernier mercredi du mois, pour conserver "et" dans les deux cas de figures...

Je pense donc avoir compris la théorie... mais je bloque sur la mise en œuvre !
Je tâtonne, m'arrache les cheveux, tâtonne encore, pousse quelques cris... mais je n'y arrive pas !!! :fou: Trop long et complexe pour moi... :tesfou:
OpenOffice 4.1.10
windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5752
Inscription : 02 janv. 2009 23:56

Re: [Résolu] déterminer les dates des mercredis d'un mois do

Message par Jean-Louis Cadeillan »

Bonjour,
Il suffit de remplacer dans la formule la troisième virgule par une formule qui choisit la virgule ou le «et» en fonction du nombre de mercredis :

Code : Tout sélectionner

SI(SOMME(JOURSEM(SI(DATE(ANNEE($E$9);MOIS($E$9);LIGNE(A1:A31))>FIN.MOIS($E$9;0);0;DATE(ANNEE($E$9);MOIS($E$9);LIGNE(A1:A31)));2)=3)<5;" et ";", ")
Voir ci-joint en A3 (le tout à valider matriciellement).
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
calagreen
Fraîchement OOthentifié
Messages : 7
Inscription : 25 juin 2021 09:39

Re: [Résolu] déterminer les dates des mercredis d'un mois do

Message par calagreen »

j'aime bien le "il suffit de" :shock:
ça à l'air tellement simple dit comme ça ! :lol:

tu me fais penser au film Men in Black, quand on découvre que la "machine" de tri postal renferme en fait un alien... Bin s'il devait y avoir une machine qui transforme nos demandes en lignes de codes, tu serais l'alien à l'intérieur ! :wink:
UN GRAND MERCI !
OpenOffice 4.1.10
windows 10