Mise en forme conditionnelle selon cases à cocher
Bonsoir !
Voilà quelques temps que j'essaye tant bien que mal de faire une mise en forme conditionnelle un peu particulière.
En gros, l'idée serrait que lorsque je coche un case (comme sur l'illustration ci-dessous en [B8]), une mise en forme conditionnelle s'applique sur l'intégralité de mon tableau en [A19:B], mettant en couleur/surbrillance le mot associé à la ligne de la case cochée (en l'occurence, ici "Clôture").
Seulement, ça m'a l'air plutôt complexe à faire et les quelques formules que j'ai pu essayer de mon côté n'ont pas portée leurs fruits.... Si l'un d'entre vous à une idée/solution, je suis tout ouïe !
- Un très grand merci à tous ceux qui essayeront.
Salut,
Je te montre un exemple de ce qui est possible. A voir comment l'adapter à ton fichier (fichier que tu n'as d'ailleurs pas fourni
Ma macro fonctionne en double-cliquant sur un mot-clef et n'indique que le premier mot-clé d'une ligne si ce mot y est plusieurs fois présent (par exemple le mot pomme à la ligne 12).
Cordialement.
Salut Yvouille !
Grand merci pour ta réponse.
C'est exactement ce genre de résultats que je souhaiterai obtenir, c'est top, merci ! Seulement, l'optimum pour moi ce serrait de l'automatiser sans avoir à passer par une macros (donc sous formule de mise en forme conditionnelle) afin de le rendre transportable et polyvalent sur mes autres projets. Tu penses que c'est réalisable/concevable de cette manière ?
N.B. : Je travaille sur Googlet Sheet. Voici une copie temporaire du fichier exemple :
.
Salut,
J'ai pris ta feuille, l'ai transformée en .xlsm et y ai adapté ma macro.
Tu pourrais faire de même avec tes autres fichiers, car je ne pense pas qu'il existe une solution hors macros. Si tu ne sais pas comment le faire, je pourrais te le montrer. Ou sinon, tu as combien d'autres fichiers à adapter ?
Attention : la recherche avec ''Laine'' trouve ''plaine'' et j'ai dû enlever les signes ''-'' à tes mots-clés ''PROG'', FPRO'', etc.
Cordialement.
Encore merci Yvouille. Ta macro est superbe, elle devrait bien me servir à l'avenir ! J'essayerai de l'adapter à ma manière en macro compatible sheet si j'y arrive un jour.
Dans tous les cas, en attendant, si quelqu'un passe dans le coin avec quelques compétences en conversion VBA vers GS Script, ou d'autres idées aussi chouette que celles d'Yvouille ça serrait vraiment super.
Bonjour,
Je me suis penché (un bon moment) sur ton problème et je peux te proposer ça :
Tu peux cocher une case à la fois (ça décoche les autres, un peu comme des boutons radio) et ça recherche ensuite le mot concerné et le passe en rouge
Le code apps script :
function onEdit() {
var f = SpreadsheetApp.getActiveSheet(), c = f.getActiveCell();
// Si une case à cocher (= si valeur de type TRUE ou FALSE)
if (typeof c.getValue() === 'boolean') {
var p = f.getRange('A19:B2000'), tabP = p.getValues(), cRow = c.getRow(), cValue = c.offset(0, -1).getValue().toLowerCase(), cLen = cValue.length, style = SpreadsheetApp.newTextStyle().setForegroundColor('#ff0000').setBold(true).build();
// Texte en noir + normal
p.setFontColor('#000000');
p.setFontWeight("normal");
// Cases cochées
for (var ligne = 2; ligne <= 11; ligne++) {
if (ligne != cRow) {
f.getRange(ligne, 2).setValue(false);
}
}
// Mise en forme
if (c.getValue()) { // Si coché
for (var ligne = 19; ligne <= 2000; ligne++) {
var texteA = tabP[ligne - 19][0].toLowerCase(), texteB = tabP[ligne - 19][1].toLowerCase(), posA = texteA.indexOf(cValue), posB = texteB.indexOf(cValue);
// Colonne A
if (posA > -1) {
f.getRange(ligne, 1).setRichTextValue(SpreadsheetApp.newRichTextValue().setText(tabP[ligne - 19][0]).setTextStyle(posA, posA + cLen, style).build());
}
// Colonne B
if (posB > -1) {
f.getRange(ligne, 2).setRichTextValue(SpreadsheetApp.newRichTextValue().setText(tabP[ligne - 19][1]).setTextStyle(posB, posB + cLen, style).build());
}
// Sortie
if (texteA == '') {
break;
}
}
}
}
}
Et le fichier Google Sheets (pour tester : Fichier > Créer une copie) :
https://docs.google.com/spreadsheets/d/10Hx0pceHA-lWYQcZlDcQtDlMXtGVd6Wb0ptOL4m3zYs/edit?usp=sharing
Cordialement,
Bonjour Sébastien,
Un immense merci pour le temps que vous avez pu y consacrer, c'est exactement ce qu'il me fallait !
Plus qu'à le moduler pour en changer l'échelle et la position et c'est parfait.
Problème résolu !