Comment concevoir un script de feuille qui entraînerait la mise en surbrillance d'une ligne active?
Je voudrais qu'une couleur entière de police ou d'arrière-plan change de ligne lorsqu'une cellule de cette ligne est active.
Je ne veux pas que le déclencheur soit une valeur spécifique dans la cellule, il suffit de cliquer sur une cellule pour déclencher la surbrillance de la ligne entière à laquelle appartient la cellule.
Désolé, cela ne peut pas être fait avec une mise en forme conditionnelle ou un script en sélectionnant simplement une cellule. Vous pouvez cependant mettre en surbrillance une ligne entière de la cellule active avec la combinaison de touches Maj-Barre d'espace.
Je me rends compte que cette question a été posée il y a quelque temps, mais je suis tombée dessus lorsque je cherchais également cette même fonction. Ma solution est un peu lourde et n'est pas une solution complète à ce que vous recherchez, mais elle combine à la fois un petit script et un petit formatage conditionnel.
J'ai d'abord écrit un petit script en utilisant la fonction onEdit ():
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var targetCell = sheet.getRange('AD1');
var activeCell = e.range.getA1Notation();
targetCell.setValue(activeCell);
}
J'ai choisi 'AD1' comme cellule cible, car elle était loin d'être à l'écart et, si nécessaire, je pouvais également choisir de masquer cette colonne.
Ensuite, je suis passé à la mise en évidence conditionnelle et l'ai tapé comme une formule personnalisée:
=ROW()=ROW(INDIRECT($AD$1))
Voila! Chaque fois que je modifie une cellule, elle met automatiquement en surbrillance cette ligne entière.
Ce n'est pas exactement ce que vous recherchez, car il ne mettra pas automatiquement en surbrillance toute la ligne dès que vous cliquez sur une cellule ... uniquement lorsque vous modifiez la cellule. De plus, si d'autres formules sont en cours d'exécution et que d'autres mises en forme conditionnelles sont en cours, votre feuille de calcul peut commencer à ralentir. Mais c'est le plus proche que j'ai vu là-bas pour une solution possible.
Beaucoup moins cool, mais toujours quelque peu fonctionnel en termes de lisibilité est une mise en évidence de base de toutes les autres lignes. Par exemple:
au formatage conditionnel: =ROW()=EVEN(ROW())
Malheureusement, cela ne peut pas être fait via onFocus comme nous le préférerions tous, mais cela fonctionne assez bien pour moi en utilisant l'événement onEdit. C'est encore étrangement lent, alors peut-être que quelqu'un pourrait le rendre plus rapide (certainement de la lecture/écriture aux propriétés, mais c'est la seule façon que j'ai trouvée pour suivre quelle ligne est mise en surbrillance).
function onEdit(e){
manageRowHighlight(e);
}
function manageRowHighlight(e) {
var props = PropertiesService.getScriptProperties();
var prevRow = parseInt(props.getProperty('highlightedRow'));
var range = e.range;
var thisRow = range.getRow();
//if it's same row, just ignore
if (prevRow == thisRow) {
return;
} else if (prevRow != null){
//else unhighlight it
range = range.getSheet().getRange(prevRow + ':' + prevRow);
range.setBackground(null);
}
//highlight the current row
var range = range.getSheet().getRange(thisRow + ':' + thisRow);
range.setBackground('#fff2cc')
//save the row so highlight can be removed later
props.setProperty('highlightedRow', thisRow);
};
Le problème que vous décrivez peut être résolu indirectement via la case à cocher.
=$A1=TRUE
(au lieu de 1, utilisez le premier numéro de ligne que vous avez sélectionné à l'étape 4).Désormais, après avoir coché la case, la ligne entière sera mise en surbrillance.