Microsoft 365 Mise en forme conditonnelle, 6 conditions, et 6 formats, avec formule fixe. Mais 35 plages et 35 cases pour la condition.

Utilisateurparasite?

XLDnaute Nouveau
Bonjour,
j'ai un peu regardé dans le forum mais je ne trouve pas de réponse à ce que j'essaie de faire.
Voilà assez classique, un calendrier avec des jours travaillés par une équipe, cependant j'aimerai que le jour soit à la couleur d'un membre de l'équipe.
J'ai déjà trouvé une solution pour que l'afficheage soit variable, et je me demande si il n'y a pas une solution moins fastidieuse de faire l'automatisation.
C'est plus un défi que pratique, je pourrai probablement faire l'organisation de l'année dans le temps qu'il faut pour automatiser une semaine.
J'imagine plusieurs pistes, mais je ne sais pas comment les mettre en place ou même si c'est possible.

Exemple :
condition : =SI(ESTNUM(CHERCHE("F";$L$6));VRAI;FAUX)
la plage : =$H$3:$M$6
prend la couleur Lavande

Obligé de mettre les $ dans la formule sinon les celulles considèrent différentes conditions, impossible d'étendre la plage aux 35 jours du calendrier si non c'est tout le calendrier qui est avec une condition unique...

J'ai mis le fichier, le début de la mise en page conditionnelle est en octobre.
 

Pièces jointes

  • HORAIRE AOUT-SEPT-OCT 2022.xlsx
    32.7 KB · Affichages: 7
Solution
La formule de la MFC, à appliquer sur toute la zone du tableau, est la suivante :
Code:
=DECALER(C3;3-MOD(LIGNE()-3;4);4-MOD(COLONNE()-3;6))="I"

Évidemment, c'est la formule pour "I", mais il y a la même formule pour les autres lettres (M, A, etc.).


Remarque : j'ai ajouté une septième MFC, pour estomper les jours qui sont en dehors du mois de la feuille.
Ca ne sert à rien, mais je trouvais que ça faisait plus joli... 😁

TooFatBoy

XLDnaute Barbatruc
La formule de la MFC, à appliquer sur toute la zone du tableau, est la suivante :
Code:
=DECALER(C3;3-MOD(LIGNE()-3;4);4-MOD(COLONNE()-3;6))="I"

Évidemment, c'est la formule pour "I", mais il y a la même formule pour les autres lettres (M, A, etc.).


Remarque : j'ai ajouté une septième MFC, pour estomper les jours qui sont en dehors du mois de la feuille.
Ca ne sert à rien, mais je trouvais que ça faisait plus joli... 😁
 
Dernière édition:

Utilisateurparasite?

XLDnaute Nouveau
La formule de la MFC, à appliquer sur toute la zone du tableau, est la suivante :
Code:
=DECALER(C3;3-MOD(LIGNE()-3;4);4-MOD(COLONNE()-3;6))="I"

Évidemment, c'est la formule pour "I", mais il y a la même formule pour les autres lettres (M, A, etc.).


Remarque : j'ai ajouté une septième MFC, pour estomper les jours qui sont en dehors du mois de la feuille.
Ca ne sert à rien, mais je trouvais que ça faisait plus joli... 😁
Génial, les mod, parfait pour modéliser un gros tableau composé de parties d'un petit tableau (c'était une des pistes que j'avais mais je ne voyais pas comment réaliser, pas pensé au modulo). En plus, pratique et facile à adapter, que demander de mieux que de modéliser un tableur dans un tableur ?
Tant de possibilités de "jouer" avec ça pour faire des choses inutiles ;p.

Encore merci.
 

Utilisateurparasite?

XLDnaute Nouveau
Je reviens pour dire ce que j'ai fait, si ca interesse quelqu'un.

en C3 j'ai changé =$B$1-JOURSEM($B$1;3)+ENT((COLONNE()-3)/6)
par simplement =$B$1-JOURSEM($B$1;3)
Si il y avait une raison qui m'est passée au dessus de la tête, je suis tout ouie.
j'ai aussi découvert l'usage du <> , très interessant pour mettre sous conditions les jours qui ne sont pas du mois 👍
Je me suis même amusé a faire compter automatiquement les présences, mais j'ai un peu de mal pour les "Gardes" comme vous l'avez deviné,
Le premier est de garde mais le second est juste d'astreinte pour les chirurgies, donc la valeur n'est pas identique. Avec une plage générale impossible de différencier premier et second( soustraire les matinées et après midis =5plages horizontales ), avec 7 plages verticales(1/j) impossible de différencier pour F et N matinées et après midis des gardes.
éventuellement en croisant les résultats on pourrait obtenir les valeurs...
J'ai essayé =NB.SI(C3:AR26;DECALER(C3;3-MOD(LIGNE()-3;4);4-MOD(COLONNE()-3;6))="I") aussi ,mais je ne sais pas trop comment définir comment ligne() et colonne() devraient suivre dans la plage.
Le plus simple serait de mettre les 2 initiales uniquement pour les gardes et de les compter, bien entendu c'est plus facile, mais bon, comme j'ai dis quand j'ai ouvert le topic : c'est plus de la curiosité que de l'efficacité que je cherche ... .
d'ailleurs ca donnerait une nette simplification au comptage de week ends ... ( je pourrais faire la même chose pour les 5 autres jours ) =NB.SI($AK6;E$30)+NB.SI($AQ6;E$30)+NB.SI($AK10;E$30)+NB.SI($AQ10;E$30)+NB.SI($AK14;E$30)+NB.SI($AQ14;E$30)+NB.SI($AQ18;E$30)+NB.SI($AK18;E$30)+NB.SI($AK22;E$30)+NB.SI($AQ22;E$30)+NB.SI($AQ26;E$30)+NB.SI($AK26;E$30) ... Une belle liste, facile à faire mais pas très elegante.
NB.SI(plage;critère) <- dans la plage on peut pas mettre de listes de cellules n'est ce pas ? j'ai essayé en leur donnant un nom de groupe, pas ca ne fonctionne pas ...

:)
 

Pièces jointes

  • HORAIRE-AOUT-SEPT-OCT 2022.xlsx
    53.1 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
en C3 j'ai changé =$B$1-JOURSEM($B$1;3)+ENT((COLONNE()-3)/6)
par simplement =$B$1-JOURSEM($B$1;3)
Si il y avait une raison qui m'est passée au dessus de la tête, je suis tout ouie.
Tu as bien fait. 👍

La raison, c'est qu'au départ je voulais mettre la formule en haut à gauche de chaque "mini tableau", puis j'ai changé d'idée : vu que le tableau est fixe, j'ai remplacé par "Date-précédente + 1" (C3+1, I3+1, O3+1, etc.). 😁


Le premier est de garde mais le second est juste d'astreinte pour les chirurgies, donc la valeur n'est pas identique.
Avec une plage générale impossible de différencier premier et second (soustraire les matinées et après-midis = 5 plages horizontales), avec 7 plages verticales (1/j) impossible de différencier pour F et N matinées et après-midis des gardes.
Euh... soit je suis complètement con, soit tu suis ton idée et du coup c'est totalement incompréhensible.
Bon, en fait je crois que c'est un peu des deux... 😁
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Je n'ai pas compris s'il fallait trouver de nouvelles formules, soit pour remplacer les actuelles, soit pour calculer d'autres choses, alors pour l'instant j'ai modifié les formules actuelles.

Code:
=NB.SI($C4:$AR4;D$30)+NB.SI($C8:$AR8;D$30)+NB.SI($C12:$AR12;D$30)+NB.SI($C16:$AR16;D$30)+NB.SI($C20:$AR20;D$30)-D$32+ENT(D$33/2)

Remplacée par

=SOMMEPROD((MOD(LIGNE($C$3:$AR$26);4)=0)*($C$3:$AR$26=D$30))-D32+ENT(D33/2)


Code:
=NB.SI($C5:$AR5;D$30)+NB.SI($C9:$AR9;D$30)+NB.SI($C13:$AR13;D$30)+NB.SI($C17:$AR17;D$30)+NB.SI($C21:$AR21;D$30)+D$33

Remplacée par

=SOMMEPROD((MOD(LIGNE($C$3:$AR$26);4)=1)*($C$3:$AR$26=D$30))+D33


Code:
=NB.SI($AK6;D$30)+NB.SI($AQ6;D$30)+NB.SI($AK10;D$30)+NB.SI($AQ10;D$30)+NB.SI($AK14;D$30)+NB.SI($AQ14;D$30)+NB.SI($AQ18;D$30)+NB.SI($AK18;D$30)+NB.SI($AK22;D$30)+NB.SI($AQ22;D$30)+NB.SI($AQ26;D$30)+NB.SI($AK26;D$30)

Remplacée par

=SOMMEPROD((MOD(LIGNE($AG$3:$AR$26);4)=2)*(MOD(COLONNE($AG$3:$AR$26);6)=1)*($AG$3:$AR$26=D$30))
 
Dernière édition:

Utilisateurparasite?

XLDnaute Nouveau
Ce que je voulais dire par : "Avec une plage générale impossible de différencier premier et second (soustraire les matinées et après-midis = 5 plages horizontales), avec 7 plages verticales (1/j) impossible de différencier pour F et N matinées et après-midis des gardes."
1662134128658.png

Si je compte les F en vertical, alors je ne peux pas faire la différence entre un F de matin et un F de garde. ( pareil avec le N de second de garde. )

1662134255496.png
Si je compte en horizontal je ne peux pas définir de différence entre premier et second de garde ...
En écrivant j'ai eu une illumination, compter en horizontal et rajouter la condition que la colonne doit etre paire :p ou impaire.
Je dois bosser je reviendrai avec plus. Et après avoir mieux regardé =sommeprod
 

Utilisateurparasite?

XLDnaute Nouveau
Donc, j'ai juste fini par adapter le produit des matrices comme tu avais fait pour le week end pour le reste de la semaine, en modifiant les plages.
=SOMMEPROD((MOD(LIGNE($AG$3:$AR$26);4)=2)*(MOD(COLONNE($AG$3:$AR$26);6)=1)*($AG$3:$AR$26=D$30))
Assez simplement "AG -> C" et "AR -> AF" et vérifier le reste du mod de la colonne pour faire le premier de garde et le second.

C'est quand même cool, ca faisait longtemps que j'avais pas fait autre chose que des produits en croix en math...

En tout cas je suis très satisfait du resultat ... la prochaine étape si il y en a une ce serait à la fin de l'année définir la somme de tous les mois ... et encore.

Encore une fois merci pour l'aide précieuse!
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T