web-dev-qa-db-fra.com

Mettre en surbrillance la ligne entière lorsque la cellule est active

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.

14
Shawn Hamilton

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.

22
Ed Nelson

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())

3
jtuque

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);
};
0
Gr3go

Le problème que vous décrivez peut être résolu indirectement via la case à cocher.

  1. Insérez la colonne A dans le tableau.
  2. Dans la colonne A, sélectionnez les cellules des lignes que vous souhaitez mettre en surbrillance avec la couleur.
  3. Dans le menu Insérer, choisissez Case à cocher.
  4. Sélectionnez des lignes entières dans lesquelles la case à cocher a été insérée.
  5. Dans le menu Format, choisissez Formatage conditionnel.
  6. Dans le panneau Règles de formatage, ajoutez le Formule personnalisée à cette règle.
  7. Entrez la formule =$A1=TRUE (au lieu de 1, utilisez le premier numéro de ligne que vous avez sélectionné à l'étape 4).
  8. Spécifiez le Style de formatage.

Désormais, après avoir coché la case, la ligne entière sera mise en surbrillance.

0
tomaju