[Résolu] MFC des vacances dans un calendrier

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.
Me_
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 mars 2011 12:09

[Résolu] MFC des vacances dans un calendrier

Message par Me_ »

Bonjour à tous,

Je suis en train de créer un calendrier avec un onglet par mois, le but étant d'avoir une mise en forme automatique du calendrier en fonction des week-end, jours fériés et vacances scolaires.

Si j'ai réussi à obtenir ce que je voulais pour les week-end et jours fériés, ce n'est pas encore le cas pour les vacances scolaires.

Je pars du principe que j'ai un onglet particulier "Fériés et Vacances" dans lequel sont saisies toutes les dates des jours fériés et les plages des vacances (donc uniquement le premier jour et le dernier jour).

J'ai pu trouvé dans les différents sujets de ce forum diverses solutions mais rien qui me convienne.

La solution qui fonctionne, mais que je trouve longue, est de vérifier pour chaque date si elle se trouve dans une des plages entre le début et la fin de chaque période de vacances.

Sinon, j'ai trouvé cette formule:

=STYLE(SI(EST.IMPAIR(EQUIV(K2;$'Fériés & Vacances'.$D$20:$D$31;1));"Vancances";"Jour")
où "K2" est la date du jour de mon calendrier
où "$'Fériés & Vacances'.$D$20:$D$31" est le tableau dans lequel se trouvent les plages de vacances
où "Vacances" est le style à appliquer si la condition est remplie
où "Jour" est le style à appliquer si la condition n'est pas remplie

Deux problème avec cette formule:
1- je ne la comprend pas :-/
2- elle ne fonctionne pas correctement car s'arrête à chaque fois la veille du dernier jour des vacances...

Je vous mets en pièce jointe le classeur dans lequel j'essaye d'appliquer cet MFC, sur la ligne 1 uniquement, des onglets de chaque mois.

Merci.


Edit: après m'être relu, je m'aperçois que je n'ai pas dit à quoi je souhaitais arriver:
Avoir dans un format particulier (fond jaune) les cellules de la ligne 1 qui contiennent une date comprise pendant les vacances.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Me_ le 01 oct. 2013 11:08, modifié 2 fois.
Apache OpenOffice 4.0.0 / Windows 7
LibreOffice 3.5.4.2 / Ubuntu 12.04
phip
HédOOniste
HédOOniste
Messages : 2016
Inscription : 09 juin 2010 18:13

Re: Mise en forme conditionnelle des vacances dans un calend

Message par phip »

Comment baliser correctement ?
AOO 4.1.4 Win10 Famille 1709
Me_
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 mars 2011 12:09

Re: Mise en forme conditionnelle des vacances dans un calend

Message par Me_ »

Merci pour ta réponse.

Le premier lien est pour les jours fériés. Ceux-ci ne me posent pas de problèmes. Cela dit, merci pour le lien, car j'étais déjà tombé dessus mais impossible de le retrouver...
Le deuxième est celui qui m'a permis d'utiliser la formule que je donne dans mon premier post. Formule que je ne comprend pas et qui ne fonctionne pas comme je le souhaite. Et comme je ne la comprend pas, il m'est difficile de l'adapter éventuellement à mon besoin...
Apache OpenOffice 4.0.0 / Windows 7
LibreOffice 3.5.4.2 / Ubuntu 12.04
phip
HédOOniste
HédOOniste
Messages : 2016
Inscription : 09 juin 2010 18:13

Re: Mise en forme conditionnelle des vacances dans un calend

Message par phip »

re
utilise la date de reprise des cours en place de fin de vacances
cela est du à la fonction EST.IMPAIR qui change à la date indiquée en fin d’où un jours en moins.
cordialement
Comment baliser correctement ?
AOO 4.1.4 Win10 Famille 1709
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Re: Mise en forme conditionnelle des vacances dans un calend

Message par gerard24 »

Bonjour,
phip a écrit :utilise la date de reprise des cours en place de fin de vacances
+1

Les explications de la formule :
=EST.IMPAIR(EQUIV(I2;$'Fériés & Vacances'.$D$20:$D$31;1))
La fonction EQUIV avec le troisième argument égal à 1 renvoie la position de la valeur cherchée dans une plage triée en ordre croissant.
Si la valeur est absente de la plage, elle renvoie la valeur immédiatement inférieure.
Par exemple EQUIV(24/02/2014;$'Fériés & Vacances'.$D$20:$D$31;1) renvoie 3 (qui correspond au 22/02/2014).

EST.IMPAIR permet de tester que la valeur renvoyée par EQUIV est une date de début de vacances.

Comme tu l'as remarqué cela pose un problème pour le dernier jour qui n'est pas considéré comme une date de vacances.
Il suffit de rajouter 1 aux date de fin pour résoudre le problème.
Par exemple en D20 feuille vacances, on ajoute un test à la fin de ta formule :

Code : Tout sélectionner

=DATEVAL(CONCATENER(GAUCHE(C20;5);"/";A$2))+(B20="Fin")
A+
OOodidacte
LibreOffice 6.4.5 sous Windows 10.
pour télécharger LibreOffice
phip
HédOOniste
HédOOniste
Messages : 2016
Inscription : 09 juin 2010 18:13

Re: Mise en forme conditionnelle des vacances dans un calend

Message par phip »

Re
+1 pour gerard24

erreur sur la fonction
c'est EQUIV et non EST.IMPAIR.
cordialement
Comment baliser correctement ?
AOO 4.1.4 Win10 Famille 1709
Me_
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 mars 2011 12:09

Re: Mise en forme conditionnelle des vacances dans un calend

Message par Me_ »

Merci pour vos réponses.

En effet, en décalant la date de fin de vacances à celle de reprise des cours, on contourne le problème. Je vais faire comme cela.

En revanche concernant l'ajout à la fin de la formule de +(B20="Fin") , quelqu'un peut-il m'expliquer son fonctionnement? Je vois en gros pourquoi le +B20 mais comment fonctionne la partie ="Fin"?

Merci.
Apache OpenOffice 4.0.0 / Windows 7
LibreOffice 3.5.4.2 / Ubuntu 12.04
Jeff
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10007
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: Mise en forme conditionnelle des vacances dans un calend

Message par Jeff »

Bonjour,
Me_ a écrit :concernant l'ajout à la fin de la formule de +(B20="Fin") , quelqu'un peut-il m'expliquer son fonctionnement?
Saisie =B20="Fin" en E20, et tu vas comprendre de suite le fonctionnement :wink:

Si cette condition n'est pas vérifiée, cette partie renvoie FAUX, que Calc interprète comme 0.
Si cette condition est vérifiée, cette partie renvoie VRAI, que Calc interprète comme 1, le fameux 1 que Gérard te demande de rajouter au date de fin.

A +
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.16 / Debian 13 "Trixie" / Xfce
AOO 4.1.15 / Debian 11 "Bullseye" / Cinnamon
Me_
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 02 mars 2011 12:09

Re: Mise en forme conditionnelle des vacances dans un calend

Message par Me_ »

Jeff a écrit :Bonjour,
Me_ a écrit :concernant l'ajout à la fin de la formule de +(B20="Fin") , quelqu'un peut-il m'expliquer son fonctionnement?
Saisie =B20="Fin" en E20, et tu vas comprendre de suite le fonctionnement :wink:

Si cette condition n'est pas vérifiée, cette partie renvoie FAUX, que Calc interprète comme 0.
Si cette condition est vérifiée, cette partie renvoie VRAI, que Calc interprète comme 1, le fameux 1 que Gérard te demande de rajouter au date de fin.

A +
Ok, je viens de comprendre! C'est tout simple en fait...

Merci à vous!
Apache OpenOffice 4.0.0 / Windows 7
LibreOffice 3.5.4.2 / Ubuntu 12.04