Calendrier dynamique, mise en forme conditionnelles et

Bonjour à tous,

je me suis inspiré de ce tutoriel https://www.youtube.com/watch?v=82tRWd4_OFc pour monter un calendrier dynamique, mais comme je suis en excel 2003 , je n'arrive pas à faire certaines mises en forme conditionnelle, et poursuivre l'ajout de règles.

J'aimerais bien avoir un tag sur la date du jour.

Indiquer le jour de paie dans (début en H5 :la règle étant, la première paie de l'année est un jeudi, au 2 semaine).

Indiquer le # de la semaine de l'année (première semaine A5).

Inscrire le nom des fériés et remplissage d'une couleur la cellule des date du férié.

Ne pas faire apparaître les cellules vides du calendrier et/ou ombrager la période du mois courant.

Les petits carrés jaunes sont réservés à un système de rotation quart de travail de jour (bas) et de soir (haut). Il y a quatre période de rotation, chacun ayant sa couleur (la règle de rotation est en développement...).

Je sais que ça fait beaucoup... En fait je tente de reproduire ce calendrier (voir image).https://www.cjoint.com/c/HJtoNvkU0dq

Je suis preneur pour toute solution en vba ou en formule.

Merci d'avance pour votre très indispensable aide.

Bonsoir,

chauvin comme je suis je vous propose ceci : https://forum.excel-pratique.com/viewtopic.php?f=3&t=82485

non pas pour l'utiliser, mais pour regarder comment les MFC sont mises en place

@ bientôt

LouReeD

Bonjour LouReed,

À première vue, votre travail semble colossale, et je ne peux qu'en être admiratif .

Pour ma part, je ne peux pas bénéficier de tous ces avantages, car je suis en excel 2003, et la conversion me fait perdre certains paramètres. Si vous aviez la version 2003, ça serait parfait.

En quoi la fierté d'un travail bien accompli est nécessairement du chauvinisme?

Merci

Bonjour LouReed,

J'ai fait quelques tentatives pour intégrer les MFC, mais je n'y arrive pas...

Merci pour votre topique, il est vraiment inspirant, notamment pour le calendrier_Plan et le calendrier Cadre

A+

Bonsoir,

ce que vous pouvez commencer à faire est d'écrire "en français" les mises en forment que vous voulez mettre en place en fonction d'une cellule date disons la première du calendrier : C6 où se trouve un 1 pour le premier janvier 2018, ce qui pourrait donner ceci :

Si la date est égale à au moins un jour férié = couleur rose

Si la date est égal soit à un samedi ou un dimanche = couleur bleue (vous pouvez même faire un distinguo entre les deux)

Si la date est égal à mon anniversaire = couleur jaune

Si la date est le premier jeudi du mois = couleur verte (pour la couleur de la paie)

Si la date est égale à aujourd'hui = couleur rouge

ETC...

Ensuite il faut "trouver" les formules pour transformer ces phrases en formule comme pour le aujourd'hui :

=ET(C6=AUJOURDHUI()) pour la formule de la MFC pis en "format" remplissage ROUGE.

Il ne faut pas de $ dans la référence de la cellule testée afin de pouvoir ensuite transposer la MFC sur la cellule suivante, soit E6 etc...

Une fois toutes les formules "trouvées" il faudra "jouer" sur leur priorité afin qu'une couleur de jour férié soit prioritaire sur la couleur d'un weekend, et que le jour "actuel" lui est prioritaire sur tous les autres...

@ bientôt

LouReeD

Bonsoir LouReed,

Merci pour les indications. je vais m'appliquer à suivre ces étapes.

Là où j'hésite aussi, c'est sur la ou les cellules à sélectionner pour intégrer la mise en forme!

Dois-je tout sélectionner le classeur ou dois-je sélectionner une plage donnée... pour que la mise en forme soit effective pour tout le calendrier?

Merci

Bonsoir,

vous sélectionnez d'abord une cellule en y mettant toutes les formules et MFC, puis ensuite un copier collage format pour les autres

Ensuite il faut "trouver" les formules pour transformer ces phrases en formule comme pour le aujourd'hui :

=ET(C6=AUJOURDHUI()) pour la formule de la MFC pis en "format" remplissage ROUGE.

Il ne faut pas de $ dans la référence de la cellule testée afin de pouvoir ensuite transposer la MFC sur la cellule suivante, soit E6 etc...

Il est vrai que ce ne sera peut-être pas vrai pour toutes les MFC mais pour la plupart

@ bientôt

LouReeD

Bonsoir LouReed,

En m'inspirant de votre aide et de votre travail, je suis parvenu à faire progressé quelque peu mon projet.

La date du jour est désormais taguée (rouge);

Le nom des fériés et remplissage (gris) sont ok.

Et partiellement, le # de la semaine est indiqué. Je dis partiellement, car votre formule conditionnelle renvoie aux jeudis, mais dans votre fichier on retrouve une valeur, alors que dans le mien il n'y a aucune valeur, ce qui cause une erreur de #valeur à certaines lignes.

Par exemple:

=SI(C18<=FIN.MOIS(C12;0);ENT((I18-RECHERCHE(I18;DATE(ANNEE(I18)+{-1;0;1};1;3)-JOURSEM(DATE(ANNEE(I18)+{-1;0;1};1;3))+2))/7)+1;"")

Est-ce possible d'adapter votre formule sans erreur de valeur, même si la cellule est vide, ou dois-je prendre une autre voie.

La prochaine étape consistera à travailler ces trois autres points:

  • Indiquer le jour de paie (début en H5 : la règle étant, la première paie de l'année est un jeudi, au 2 semaine).
  • Ne pas faire apparaître les cellules vides du calendrier et/ou les ombrager.
  • Insérer la rotation des quarts de travail (me paraît passablement complexe)

Merci pour tout

A+

Bonsoir,

l'erreur #Valeur! est du au fait que vous essayez de calculer un chiffre avec une valeur alphanumérique égale à rien...

donc plutôt que de mettre une formule pour "effacer" le résultat d'une formule comme en S6 :

=SI(JOURSEM(Q3)=2;Q3;"")

En fait il faudrait trouver "la vrai valeur" du jour concerné.

Pour ma part j'ai utilisé cette formule :

=SI(JOUR(DATE(An;MOIS(1&Premier_mois)+1;7)-MOD(DATE(An;MOIS(1&Premier_mois)+1;7)-2;7))>1;DATE(An;MOIS(1&Premier_mois)+1;7)-MOD(DATE(An;MOIS(1&Premier_mois)+1;7)-2;7)-7;DATE(An;MOIS(1&Premier_mois)+1;7)-MOD(DATE(An;MOIS(1&Premier_mois)+1;7)-2;7))

Qu'on peut traduire ainsi (dans votre cas ce serait pour la cellule S6) :

si le numéro du jour du premier lundi du mois concerné est supérieur à 1

(ce qui veut dire que le premier jour du mois concerné n'est pas un lundi)

alors afficher le premier lundi du mois concerné - 7 jours, c'est à dire le dernier lundi du mois d'avant, hors en S6, c'est bien le dernier lundi du mois d'avant qu'il faut afficher.

Le reste de la formule est pour le cas où le premier lundi du mois concerné correspond bien au premier lundi.

Du coup votre bloc calendaire Q3:AE22 commence bien avec un lundi dont on connaît la date, les autre dates du bloc en "découlent" naturellement avec un "+1" par rapport au lundi, puis mardi...etc.

Vous allez me dire : oui mais du coup on voit que le lundi est marqué 28 du fait que le dernier lundi de janvier 2018 soit un 28.

Il suffit alors pour effacer cette donnée de mettre une MFC disant, puisque l'on se trouve sur le bloc de Février :

Si mois de la date est différent de février alors mettre en gris avec une écriture grise, et voilà plus d'erreur de #Valeur!

En espérant avoir été assez clair

@ bientôt

LouReeD

Bonjour LouReed,

Voilà beaucoup de matière à réflexion. Merci beaucoup pour votre analyse.

Je ne suis pas en mesure d'évaluer quelle est la meilleur formule pour la cellule S6 (pour chaque premier lundi du mois), mais certes la différence vient que rendu à la semaine 5 (S18) et la semaine 6 (S21), j'ai mis plutôt

=SI(AE15<FIN.MOIS(Q3;0);AE15+1;"")

, plutôt qu'un +1. C'est pourquoi je me retrouve sans valeur suivant le dernier jour du mois.

J'ai bien compris que s'il n'y pas de valeur pour certains jeudis, cela brise la séquence...des # de semaines (ce que je regrette). J'aimais bien l'idée d'avoir le # de semaine qui se poursuit sur le mois qui suit lorsque l'on change de mois en cours de semaine.

Bref, je voulais éviter de multiplier le MFC, mais s'il est impossible d'adapter la formule du décompte des semaines, je vais sans doute m'y résigner.

Merci encore et bonne fin de semaine.

Rechercher des sujets similaires à "calendrier dynamique mise forme conditionnelles"