XL 2019 Mise en forme conditionnelle (dégradé de couleurs) sur un ensemble de cellules déterminé par une formule

gthe

XLDnaute Junior
Bonjour,

Je souhaite réaliser une mise en forme (dégradé de couleur selon les valeurs des cellules) qui ne s'applique uniquement qu'à des cellules spécifiquement mises en forme à l'aide d'une formule.

En d'autres termes le tableau ci-dessous contient plein de cases grisées et d'autres actives (et j'avais fait la mise en forme "dégradé" sur l'intégralité du tableau. Mais certaines cases avec des valeurs super élevées sont "masquées" car elles ne m'intéressent pas.

L'idée serait, que pour seulement les cases affichées (sachant que celles-ci changent en fonction d'une liste déroulante) et quelque soit l'état de la liste déroulante, la mise en forme conditionnelle "dégradée de couleurs" ne s'applique seulement qu'à l'ensemble des cellules "visibles" (je dois voir une cellule tout en rouge et une cellule tout en vert et toutes les valeurs intermédiaires, pour chacun des cas de la liste déroulante).

1620149452647.png


Voici un fichier réduit avec les infos nécessaires. La commande en haut à droite permet d'afficher les différents cas de figure (X/Y n'affiche que les cases telles que X = 1 ou 2 selon les "1" ou "2" affichés en colonne B ; et telles que Y = 1 ou 2 selon les "1" ou "1" affichés en ligne 4)

En vous remerciant :)
 

Pièces jointes

  • Copie réduite fichier.xlsm
    239.6 KB · Affichages: 49

Dranreb

XLDnaute Barbatruc
Bonsoir.
Je ne pense pas que ce soit possible.
Par ailleurs votre formule est tellement compliquée qu'à votre place je ferais une fonction personnalisée.
Ça ouvrirait d'ailleurs la possibilité de ranger quelque part une consigne de changer la couleur de fond de la cellule (l'opération proprement dite ne pouvant s'effectuer lors de son l'évaluation)
 

gthe

XLDnaute Junior
@Dranreb ,
Merci pour ta réponse, même si c'est le genre de réponse que je craignais :(

Je ne sais pas comment aboutir à une fonction personnalisée, mais les formules qui sont dans chaque cellule du tableau ne sont qu'une imbrication de fonctions si corrélées à l'état de la case déroulante (après j'ai rajouté une fonction siesterreur pour éviter des affichages #VALEUR intempestifs, mais c'est tout).

Après, assujettir une MFC "dégradé de couleurs" aux cases du tableau qui varient en fonction de l'état d'une cellule (celle d'en haut à gauche), je ne sais pas faire :(
 

Dranreb

XLDnaute Barbatruc
Une fonction personnalisée c'est un procédure Function dans un module standard.
Le module de classe Couleur de cette ressource sait calculer des dégradés de couleurs.
 

gthe

XLDnaute Junior
Ah oui d'accord, je vois le niveau !
Ca risque d'être trop compliqué pour ce que je veux faire, va falloir que je trouve une autre solution.

L'idée, dans le fichier que j'ai joint, c'est que la mise en forme "case grisée 75%" (celle qui commence par =ET[...]) me permet d'afficher en police bleue que les cases qui m'intéressent (et c'est pour ça que celle qui commence par =OU[...], qui est sa réciproque — à un outil près : l'outil de discrimination des valeurs inférieures en J4 — grise toutes les autres cases).

C'est justement à ces cases "en police bleu" (et uniquement celles-là) auxquelles je souhaiterais appliquer ma mise en forme de couleurs (un dégradé à 3 couleurs en fonction des valeurs, comme les fonctions classiques qui sont inclues). La difficulté est que ces cases "en police bleue" varient en fonction de la case située en haut à gauche (liste déroulante).

Tu sais comment je pourrais tirer parti de ton fichier par exemple (je ne sais utiliser que les formules mais pas VBA, sauf pour copier un code) pour réussir à appliquer cette MFC (elle même conditionnelle aussi) ?

Merci !
(ou toute autre solution est bienvenue aussi !)
 

Dranreb

XLDnaute Barbatruc
Oui mais moi je ne comprend rien à vos calculs. C'est imbitable des formules aussi longues ! Alors faites les dans une Function à laquelle vous transmettez toutes les arguments nécessaires aux calculs.
Moi je vous donne juste la solution pour mettre une couleur de fond quand un argument changera.
 

Pièces jointes

  • Classeur1.xlsm
    38.8 KB · Affichages: 3

Marcel32

XLDnaute Accro
Bonjour,

D'après ce que je comprends, tu veux appliquer un fond dégradé uniquement aux cellules qui ont leur texte en bleu.

Si je ne me trompe, le texte est mis en bleu par une MFC.
Donc dans ce cas, il suffit de définir dans cette MFC non seulement la mise en forme du texte mais aussi la mise en forme du fond de la cellule.

J'ai bon, ou ce n'est pas possible à cause du dégradé ?
 

Dranreb

XLDnaute Barbatruc
C'est vrai que j'ai parlé un peu trop vite:
Si on passe devant la MFC qui grise et qu'on y coche "interrompre si vrai" le dégradé de couleurs n'est plus appliqué sur celles grisées. Il n'empêche que la formule gagneraient grandement à être écrite en fonction personnalisée. Avec un Select Case, surement.
En plus tout le fourbi est calculé deux fois, je crois, car la formule est de la forme =SI(ESTERREUR(FormuleÀRallonge);"";FormuleÀRallonge) au lieu de
=SIERREUR(FormuleÀRallonge;"")
 
Dernière édition:

gthe

XLDnaute Junior
@Dranreb , merci pour votre réponse. Je n'ai pas le niveau de maîtrise suffisant sur Excel pour m'offrir le luxe de faire des formules "optimisées". Si déjà ça marche et que j'obtiens les bons résultats, c'est tant mieux. Néanmoins, très intéressant votre remarque sur SIERREUR... Je vais l'appliquer pour fluidifier le bouzin ;D
Merci également pour votre fichier sur les couleurs, mais je ne sais quoi en faire vu mes compétences...

@Marcel32 tu as tout compris. Le problème, c'est que je ne sais pas comment appliquer un dégradé de couleurs dans ce cas précis car Excel ne me le propose pas quand je suis dans le mode "mettre une formule pour définir la mise en forme". C'est ça qui me coince. Et j'aurais aimé un truc aussi nickel que Excel le fait, c.a.d centile par centile...

Merci pour vos remarques, je passe ce soir voir s'il y a du nouveau.

Allez, on va y arriver, ce que je demande reste donc exactement ce que Marcel32 à dit : les MFC "bleues" sont dépendantes d'une autre cellule, ces MFC ne sont jamais les mêmes car "mobiles".
L'idée est d'appliquer un dégradé de couleur seulement sur ces cellules "bleues" concernées par la MFC (vous remarquerez qu'aucune cellule n'est bleue lorsque que la case en haut à gauche de la liste déroulante est "général", parce que dans ce cas précis, il ne faut rien discriminer).

Merci !
 

Marcel32

XLDnaute Accro
Si les dégradés ne sont pas utilisables dans le format des MFC alors tu peux peut-être faire comme pour les cellules "grisées/estompées", c'est-à-dire mettre un dégradé par défaut sur toutes les cellules de ton tableau et supprimer ce dégradé pour les cellules qui n'ont pas le texte en bleu.
 

gthe

XLDnaute Junior
Si les dégradés ne sont pas utilisables dans le format des MFC alors tu peux peut-être faire comme pour les cellules "grisées/estompées", c'est-à-dire mettre un dégradé par défaut sur toutes les cellules de ton tableau et supprimer ce dégradé pour les cellules qui n'ont pas le texte en bleu.
En suivant #8 le dégradé n'est apparent que pour les cellules écrites en bleu (youpi) mais l'échelle de couleurs reste définie en fonction de toutes les valeurs du tableau si bien que je ne couvre pas tout le spectre des couleurs pour mes cellules écrites en bleu.

J'ai remarqué qu'en supprimant le format nombre alors la MFC dégradé de couleur ne prend pas en compte la cellule.
Existe t il une MFC qui permettent, aux cellules grisées donc non écrites en bleu, de les rendre en un format non interprétable en tant que nombre ? Et par conséquent n'appliquer que l'entièreté du dégradé sur les cellules non grisées ?
(J'ai essayé en les mettant en format txt mais ça s'applique quand même...)

Merci!
 

gthe

XLDnaute Junior
Parce que à vue de nez c'est sans effet, le dégradé de couleur des cases "affichées" ne varie qu'entre le rouge et le jaune, ce qui suppose que Excel prend en compte la plage 100x100 du tableau entier et non pas uniquement des cases non grisées.
(Nota : les lignes 1,2 et 3 sont exclues du dispositifs, elles sont gérées par une autre MFC qui ne pose pas de problème)

En fait, c'est la plage de la MFC dégradée qui faudrait réussir à changer, mais je ne peux faire qu'une sélection de cellules comme affichée ci-bas (pour cette MFC)

1620233292469.png


En effet, le menu suivant de la MFC dégradé ne me propose rien pour "conditionner" cette MFC...

Quoi qu'en allant dans les modifications de MFC du dégradé on a :

1620233589797.png


puis on peut sélectionner des cellules en cliquant sur la flèche, mais peut-on y mettre une formule conditionnelle ? Je ne pense pas, si ?

Edit : EXCEL n'a pas aimé que je tape ma formule permettant de discriminer les cellules bleues des autres et d'appliquer la MFC qu'à celles-ci... (mais l'idée, même si je savais que c'était absurde ici, c'est bien cela...)

1620233732587.png
 

Pièces jointes

  • 1620233554993.png
    1620233554993.png
    490.6 KB · Affichages: 4
Dernière édition:

Dranreb

XLDnaute Barbatruc
Une formule commençant par =ET ne saurait être un nombre.
Essayez en spécifiant des cellule, éventuellement nommées, contenant les limites, obtenues éventuellement par des formules exploitant les mêmes conditions que la MFC qui grise.
 

gthe

XLDnaute Junior
Une formule commençant par =ET ne saurait être un nombre.
Essayez en spécifiant des cellule, éventuellement nommées, contenant les limites, obtenues éventuellement par des formules exploitant les mêmes conditions que la MFC qui grise.
Je vais voir ça, mais ça me paraît bien plus compliqué que ce que j'imaginais...
Mais je comprends l'idée : si j'arrive à extraire le min et le max de ma sélection, le dégradé de couleurs ne s'opèrera que pour cet intervalle... C'est vraiment malin !

Sachant que ma formule improbable =ET(...) permet de sélectionner un ensemble de cases, comment puis-je mettre dans une cellule le min de cette sélection ? (je ferai pareil pour le max).
Ensuite, il me suffira de monter la MFC grise en position n°1 puis à cocher interrompre si vrai.
Et même si la plage de la MFC colorée restera inchangée, elle ne s'appliquera de toute manière qu'entre les minimas et les maximas des cases écrites en bleu... C'est brillant !

Si la question en gras est résolue, il y a donc moyen de résoudre ce problème.
Merci !
 

Discussions similaires

Réponses
16
Affichages
668

Statistiques des forums

Discussions
291 667
Messages
1 916 973
Membres
179 500
dernier inscrit
oximo
Haut Bas