Masquer ligne avec macro et les réafficher avec une autre

Bonjour ami du forum et merci pour votre aide,

Voici mon problème pas encore résolu, j'ai un tableau (ici rien à voir avec le vrai c'est juste un exemple mais pour la formule ce sera la même colonne):

image

Après le tri de la colonne "A" je vais avoir du vide en bas de la colonne normal

image

Donc voilà j'aimerais que les rangées de la colonne "A" qui sont vide (ici en jaune) soient masquée grâce à une macro.

image

car dans une autre macro qui ré affichera ces lignes pour ensuite faire un autre tri suivant d'autres critères.

Voici le lien du fichier test mais une formule me conviendrais aussi.

https://docs.google.com/spreadsheets/d/1Xle8RXjOGo-1wkqvsBkYe8E-99N-8knRuUYw0iQRZ0g/edit?usp=sharing

Merci d'avance pour le dernier point pour ce fichier

mbell

Bonjour,

accès refusé, je t'ai une demande ...

Tu peux essayer ceci

function masquerLignesVides() {
  const sh = SpreadsheetApp.getActiveSheet();
  const data = sh.getDataRange().getValues();
  const lignes_vides = [];
  data.forEach((r, i) => { if (r[1] == '') { lignes_vides.push(+i + 1) } }) // uniquement colonne B vide
  lignes_vides.reverse().forEach(i => sh.hideRow(sh.getRange('A' + i)));
}

https://developers.google.com/apps-script/reference/spreadsheet/sheet#hiderowrow

Bonjour Steelson,

La formule ok mais ce n'est que sur une partie de ligne et pas toute la feuille et pour les réafficher par la suite?

Voilà l'accés

Merci d'avance pour ton aide i précieuse.

mbell

La formule ok mais ce n'est que sur une partie de ligne et pas toute la feuille

Je n'ai pas compris, mon attitude est de toujours supprimer le plus possible de lignes après la dernière car il est inutile d'avoir un fichier trop lourd (ce que permet GSheets et pas excel). Donc en effet dans le code je n'ai effacé que les lignes "entre" les données. Comme du reste ton image qui précisait les lignes jaunes.

Pour afficher

function afficherLignes(){
  const sh = SpreadsheetApp.getActiveSheet();
  sh.unhideRow(sh.getRange('A1:A'+sh.getLastRow()));
}

https://developers.google.com/apps-script/reference/spreadsheet/sheet#unhiderowrow

re: Steelson,

Il y a un autre problème sur mon tableau j'ai des cellule A qui sont fusionnées

image

oui la formule fonctionne mais je n'ai pas plus de 90 ligne et jusque AD dans les colonne j'ai supprimer ce que je n'avais pas besoin

mbell

re:

le dessus jusque la rangée "4" comprise doit être afficher mais ce n'est pas le cas

image

la recherche devrais partir de la rangée 5 jusqu'e la rangée 69 et repartir à la rangée "71" jusque la fin

avec la formule elle efface les 4 première rangée, et toute les rangée dé la première vide rencontrée :(

image

je t'ai envoyé le lien avec accès.

Pour rappel du fichier

image

Je travaille sur la macro 4

Je dois m'absenter et te relierais fin d'après-midi

Merci pour ton aide

mbell

je me suis basé sur la colonne A à partir de la 5 (et donc comme A70 est renseigné il n'y aura pas de soucis)

function masquerLignesVides() {
  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)));
}
function afficherLignes() {
  const sh = SpreadsheetApp.getActiveSheet();
  sh.unhideRow(sh.getRange('A1:A' + sh.getLastRow()));
}

Bonjour Steelson,

Avec un peu de retard mais je viens vers toi pour te remercier car les formules fonctionne à merveilles.

Je sais bien que pour un informaticien ce serait peut être brouillon mais l'important c'est que rien ne buge et que le résultat final soit celui que l'on recherchait.

Encore merci pour ta patience et participation.

mbell

Rechercher des sujets similaires à "masquer ligne macro reafficher"