Mise en forme selon critère

Bonjour

Je souhaiterais avoir un script qui me permettrait de mettre en forme automatiquement certaines lignes de mon fichier si la colonne O comporte 1 alors mise en gras de la ligne. Si la colonne O comporte 0 ne pas mettre en gras.

image

Le fichier n'auras pas toujours le même nombre de lignes

Merci de votre aide

Bonjour,

Une solution pour tout mettre en gras en une fois :

function lignesEnGras() {
  const f = SpreadsheetApp.getActiveSheet();
  f.getDataRange().setFontWeight('normal');

  const maxLigne = f.getLastRow();
  const p = f.getRange('O1:O' + maxLigne).getValues();

  for (let i = 1; i <= maxLigne; i++) {
    p[i - 1][0] == 1 && f.getRange(i + ':' + i).setFontWeight('bold');
  }
}

Une solution pour mettre en gras lorsqu'il y a des changements :

function onEdit(e) {
  if (e.range.getColumn() === 15) {
    const ligne = e.range.getRow();
    e.range.getSheet().getRange(ligne + ':' + ligne).setFontWeight(e.value == 1 ? 'bold' : 'normal');
  }
}

Cordialement,

Super Merci beaucoup Sébastien ça fonctionne parfaitement

Merci beaucoup pour votre réponse ça fonctionne parfaitement.

J'avais une autre interrogation si je peux me permettre. Est-ce possible de modifier dans une colonne des 1 ou 0 et de leur donner une autre valeur à savoir transformer 1 en OUI et 0 en NON. et dans un second temps attribuer une couleur aux cellules contenant NON.

Laquelle de mes solutions tu utilises ? La première ou la deuxième ?

la première

Voila :

function traitement() {
  const f = SpreadsheetApp.getActiveSheet();
  f.getDataRange().setFontWeight('normal');

  const maxLigne = f.getLastRow();
  const p = f.getRange('O1:O' + maxLigne).getValues();

  for (let i = 1; i <= maxLigne; i++) {
    const oui = p[i - 1][0] === 1;
    const non = p[i - 1][0] === 0;
    oui && f.getRange(i + ':' + i).setFontWeight('bold');
    const c = f.getRange('O' + i);
    (oui || non) && c.setValue(oui ? 'OUI' : 'NON');
    non && c.setBackground('#FF6A6A');
  }
}

Merci Sébastien mais la transformation des 1 en OUI et des 0 en NON ainsi que la mise en couleur des cellule contenant NON se fait sur une autre colonne que O à savoir F.

J'ai essayé d'adapter ton code dans ce sens mais j'ai un message d'erreur.

Pourtant, si je teste c'est bien la colonne O (et dans le code c'est écrit "O") donc je ne vois pas

en fait le premier code pour mettre mettre en gras les lignes fonctionne parfaitement mais concerne la colonne O

En revanche ma seconde demande concerne une autre colonne à savoir F. Dans cette colonne il y a également des 1 et 0 que je veux transformer en OUI et NON et dans la foulée mettre les NON en couleur orange.

Je me suis mal exprimé je m'en excuse

Ah ok, dans ce cas c'est un problème qui n'a rien à voir avec le premier ...

function traitement2() {
  const f = SpreadsheetApp.getActiveSheet();
  const maxLigne = f.getLastRow();
  const p = f.getRange('F1:F' + maxLigne).getValues();

  for (let i = 1; i <= maxLigne; i++) {
    const oui = p[i - 1][0] === 1;
    const non = p[i - 1][0] === 0;
    const c = f.getRange('F' + i);
    (oui || non) && c.setValue(oui ? 'OUI' : 'NON');
    non && c.setBackground('#FF6A6A');
  }
}
Rechercher des sujets similaires à "mise forme critere"