Mise en forme conditionnelle complexe ?

Bonjour,

Je suis débutant dans la pratique de Sheets, je commence tout juste à utiliser certaines règles de mise en forme conditionnelle.

J'ai un exercice sur lequel je bute, voici le tableur :

capture

Est-il possible d'afficher automatiquement le nom du salarié (Jacques, Marion, Nicolas, Céline, Laurent Carole) à droite de Maillot jaune ou maillot bleu, selon les critères suivants :

- maillot jaune : meilleure progression globale de la semaine

- maillot bleu : meilleure progression sur 1 des 4 thèmes

Je pense que c'est faisable avec la mise en forme conditionnelle, mais cela nécessiterait une formule et je ne maîtrise pas encore les formules sheets ou Excel.

D'avance un grand merci à celles et ceux qui me liront et prendront le temps de me répondre !

Bien cordialement.

Toutes mes excuses, j'ai oublié de joindre le lien vers mon fichier

Le voici :https://docs.google.com/spreadsheets/d/1osjiM7D1AF5eMuxvFdxwn5_mxn5qdJoTGgKfTB5MqU4/edit?usp=sharing

Bonjour,

Non, ce n'est pas une mise en forme conditionnelle mais un calcul. Et en plus c'est assez complexe à partir d'un tableau. Je vais donc d'abord le mettre au format "base de données" (un bien grand mot en fait pour Liste) et ensuite tirer la valeur.

Qu'est-ce que tu entends pas progression globale ? La moyenne des progressions ?

J'ai mis les formules sur fond jaune.

Il y a probablement plus simple, mais je prend au départ une formule passe-partout qui me permet de mettre en colonnes :

=query({
arrayformula(vlookup((roundup(flatten(sequence(columns(tab);rows(tab);1;1)/columns(tab))));{flatten(sequence(columns(tab);rows(tab);1;1))\flatten(transpose(tab))};2;0))\
arrayformula(vlookup(mod(flatten(sequence(rows(tab);columns(tab);0;1));columns(tab))+1;{flatten(sequence(rows(tab);columns(tab);1;1))\flatten(tab)};2;0))\
flatten(tab)
};"select * where Col1 is not null and Col2 is not null and Col3 is not null";0)

je vais faire demain un topo sur cette fonction, à noter que le tableau s'appelle tab

Ensuite je peux appliquer un query ...


... mais que j'aurais pu appliquer de suite => formules en vert

maillot jaune

=query({
arrayformula(vlookup((roundup(flatten(sequence(columns(tab);rows(tab);1;1)/columns(tab))));{flatten(sequence(columns(tab);rows(tab);1;1))\flatten(transpose(tab))};2;0))\
arrayformula(vlookup(mod(flatten(sequence(rows(tab);columns(tab);0;1));columns(tab))+1;{flatten(sequence(rows(tab);columns(tab);1;1))\flatten(tab)};2;0))\
flatten(tab)
};"select Col2 order by Col3 desc limit 1";0)

maillot à pois bleus

=query({
arrayformula(vlookup((roundup(flatten(sequence(columns(tab);rows(tab);1;1)/columns(tab))));{flatten(sequence(columns(tab);rows(tab);1;1))\flatten(transpose(tab))};2;0))\
arrayformula(vlookup(mod(flatten(sequence(rows(tab);columns(tab);0;1));columns(tab))+1;{flatten(sequence(rows(tab);columns(tab);1;1))\flatten(tab)};2;0))\
flatten(tab)
};"select Col2 where Col1='Moyenne globale' order by Col3 desc limit 1";0)

Remarque ... si tu ne veux pas les données en colonne K, mais juste mettre en surbrillance les valeurs max, alors oui un MFC suffit.

Voir le fichier.

Ouahhh

Effectivement je ne risquais pas de trouver par moi-même !

Un grand merci à toi

Et oui : progression globale = moyenne des progressions.

Si c'est ok, clos le fil de discussion en cliquant sur

Slt,

image

Dans l'onglet "Hott", je vous propose ma solution.

Bien à vous.

Merci bcp pour cette solution simple ! c'est vrai que ma solution est une usine à gaz, mais c'est mon problème du moment, et une solution plus passe-partout.

J'aime bien ta solution simple et compréhensible.

Merci beaucoup Hott18, c'est vrai que cette solution est plus simple à mettre en œuvre.

Je retiens vos deux propositions qui me permettront de progresser avec sheets, et un grand merci d'avoir pris le temps de me répondre

@Hott18 ... as-tu une solution lorsqu'il y a 2 valeurs identiques ?

@Lesaintdrome

J'ai changé ma formule, plus simple, mais qui prend aussi en compte les doublons

=textjoin(char(10);true;filter(M:M;N:N=max($C$4:$H$8)))

Bonjour,

Et franchement merci à toi ainsi qu'à @Hott18, de prendre le temps de m'aider.

Je n'ai plus que l'embarras du choix

Tu as raison, ma formule est limitée.

Je viens d'en chopper une sur le net, je pense qu'elle est pas mal, je vous la partage.

image

Il faut l'étirer sur plusieurs lignes pour avoir tous les noms. Vous comprendrez.

je pense qu'on doit pouvoir le faire sans étirer, mais arrayformula n'aime pas index et il faut passer par match et / ou filter, je tenterai le coup demain

pas simple !

=filter(transpose(C4:H4); mmult(transpose(arrayformula(N($C$5:$H$8=max($C$5:$H$8))));sequence(COUNTA($B$5:$B$8);1;1;0))>0)

celle-là, c'est un super exercice intellectuel !

ou alors, avec plages nommées entetes et data

=textjoin(char(10);true;filter(transpose(entetes); mmult(transpose((N(data=max(data))));sequence(rows(data);1;1;0))>0))

Jeu, set et match. Bravo !

Pour revenir sur la solution proposée (et me souvenir aussi de la démarche), voici une explication :

Après pas mal d'essais avec query, arrayformula, join, textjoin ... qui n'admettent pas de définir une matrice 2D, je me suis tourné vers la multiplication matricielle qui permet de passer d'une matrice 2D à une matrice 1D (colonne).

Donc, en partant de cette plage définie comme data

0.56530.050.17320.12210.38170.03
0.3120.56530.2320.15550.2320.2981
0.030.54770.250.34080.12210.5
0.56530.350.1330.2320.44550.2935

j'ai transformé les valeurs en leur appliquant le critère d'égalité avec la valeur max

=arrayformula(N(data=max(data)))

matrice résultat de la condition et non transposée

100000
010000
000000
100000

on peut alors sommer les colonnes par la multiplication

  • de cette matrice transposée de 4 lignes x 6 colonnes
  • avec une matrice de 4 lignes x 1 colonne composée de 1 et obtenue par sequence
sequence(rows(data);1;1;0)

d'où :

=arrayformula(mmult(transpose((N(data=max(data))));sequence(rows(data);1;1;0)))
100112
010011
0000x1=0
000010
00000
00000

Il suffit alors de filtrer les en-têtes de colonnes (transposées) par les valeurs >0 de ce résultat

Rechercher des sujets similaires à "mise forme conditionnelle complexe"