Formule qui masque les lignes sauf les deux première vide

Bonjour à tous ,

Voici un petit soucis: j'ai une formule qui masque bien les lignes vide, mais j'aimerais que cette formule fonctionne à vide + 2.

Je m'explique la formule par du principe que si une ligne de la colonne "A" à partir de "A5 inclus" est vide je masque la ligne mais j'aimerais qu'avant de masquer la formule me laisse les deux première ligne vide.

voici la formule

  const sh = SpreadsheetApp.getActiveSheet();
  const data = sh.getDataRange().getValues();
  const lignes_vides = [];
  data.forEach((r, i) => { if (r[0] == '' && i > 4) { lignes_vides.push(+i + 1) } })
  lignes_vides.reverse().forEach(i => sh.hideRow(sh.getRange('A' + i)));

Elle se trouve en ligne 117 du fichiers colonne.gs dans les macros.

Exemple en image actuellement j'ai ceci : de 42 à 255 les ligne sont vide et masquées et même chose de 272 à 310

image

et j'aimerais que la formule me laisse les lignes 43 et 44 visible ainsi que les lignes 273-274 et ce même si elles sont vident.

image image

Que faut il modifier ou ajouter dans la formule .

Je me connais pas grand chose en code mais une bonne piste serrait super.

Merci d'avance à tous

https://docs.google.com/spreadsheets/d/1AA7E7KEvlh5mFZF35B9V6aNLXL_kbFq6QbThBZ9drFc/edit#gid=63399823

mbell

Hello,

Si tu veux afficher toujours les mêmes lignes c'est plus simple de faire comme ceci :

const sh = SpreadsheetApp.getActiveSheet();
  const data = sh.getDataRange().getValues();
  const lignes_vides = [];
  data.forEach((r, i) => { if (r[0] == '' && i > 4) { lignes_vides.push(+i + 1) } })
  lignes_vides.reverse().forEach(i => sh.hideRow(sh.getRange('A' + i)));
  sh.showRows(43, 2)
  sh.showRows(273, 2)

Bonjour Rag02700 et merci d'avoir répondu,

Désolé mais la formule ne fonctionne pas.

et si je comprend ta formule la ligne 43 +2 et 273 +2 devraient être visible., "sh.showRows"

Est ce bien ça?

Ces lignes peuvent changer et peux devenir la 51 , 52, 53 suivant le nombre d'inscrit.

mbell

Hello,

et si je comprend ta formule la ligne 43 +2 et 273 +2 devraient être visible.

Est ce bien ça?

Oui c'est ça mais dans les 2, le 43 et le 273 sont inclus

re:

mais la formule ne fonctionne pas les lignes se masque comme auparavant mais les lignes 43, 44 et 45 également.

Mais comme expliqué dans le premier message ces lignes seront variable, j'explique:

Actuellement le fichier compte 42 membres et les lignes vides permettrait à l'équipe qui utilise le fichier a pouvoir rajouté de nouveau membre donc ce sera 43 puis 45 ainsi de suite.

Après ce nouvel l'ajout le fichier qui trie tous ça grâce à une formule et donc pas besoin de démasquer pour rajouter une ligne.

C'est pour cela que j'aimerais si c'est possible d'avoir systématiquement deux lignes voir même qu'une seule de vide après le dernier enregistrement.

J'espère que c'est plus compréhensible ainsi.

Merci beaucoup à toi de m'aider.

mbell

Bonjour Rag02700,

La formule fonctionne sûrement un oublis ou la fatigue de hier .

Mais comme expliqué la 43 -ème ligne ne sera plus la dernière si il y a d'autre nouveau enregistrement, donc dans la formule

  data.forEach((r, i) => { if (r[0] == '' && i > 4) { lignes_vides.push(+i + 1) } })
  lignes_vides.reverse().forEach(i => sh.hideRow(sh.getRange('A' + i)));

quel est l'information de la dernière ligne vide "r" ou "i", ce qui serait le top dans cette formule ce serait d'ajouter juste une ligne vide après la dernier cellule remplie tout simplement .

Sais tu comment modifier cette formule?

Merci d'avance Raag02700

mbell

 { lignes_vides.push(+i + 1)

En modifiant le +1 en +2 ça à l'air de fonctionner ça laisse une ligne vide avant de masquer les autres à voir...

  data.forEach((r, i) => { if (r[0] == '' && i > 4) { lignes_vides.push(+i + 2) } })
  lignes_vides.reverse().forEach(i => sh.hideRow(sh.getRange('A' + i)));

mbell

Rechercher des sujets similaires à "formule qui masque lignes sauf deux premiere vide"