Macro Masquer des lignes si elles ne contiennent des caractères

Bonjour à tous,

Besoins de votre aide car je n'ai pas fait de scripts depuis quelques années et là je suis perdu.

Sur mon tableur :

image

je souhaite que les lignes se cachent si les cellules des colonnes C et D ne contiennent pas le texte de la cellule C1

Cela me permet d'atteindre facilement un nom d'établissement ou de ville

La cellule A3 me permet le True/False de chaque ligne

il faudrait donc un macro masquant les lignes false quand je rentre du texte en C1 (mon tableau fait plus de 2000 lignes !)

bien sur on peux filtrer la colonne A en True/False, mais je voudrais automatiser le masquage

Voici mon fichier

https://docs.google.com/spreadsheets/d/1UtSmY5DS1fzok5QlQcB-v4nwDURfSu_fNWsxK-a8mmo/edit?usp=sharing

Par avance merci pour votre aide

Bonjour,

Je te propose une solution sans script, qui a l'avantage d'être plus rapide à l'exécution...

https://docs.google.com/spreadsheets/d/1joZ1_L4oUFRXJ6X4dia3E1PxhKnsYOp4zDieTUwZejM/edit?usp=sharing

Ton tableau actuel = onglet "Source" (à masquer ?)

Tableau filtré = onglet "Affichage"

Formule en "Source" A3, qui déroule automatiquement vers le bas et met les "*" automatiquement pour la recherche.

=MAP(F3:F;G3:G;lambda(n;m;(NB.SI(n;"*"&Affichage!$E$1&"*")>=1)))

Formule en "Affichage" en A3, tu peux limiter ton tableau uniquement aux colonnes qui t'intéressent :

=query(Source!A3:G;"select B,C,D,E,F,G where A=true")

Cordialement,

Fil.

Merci Fil pour ta solution que je vais essayer dès que je serai devant un ordinateur,

petite question si j'effectue une modification dans affichage est-ce qu'elle se reporte dans le tableau source ? L'idée c'est de filtrer une base de données pour l'enrichir au fur et à mesure des contacts

Non, l'onglet Affichage est juste pour consulter les données filtrées de l'onglet Source...

Mais, tu peux toujours adapter ça à ton tableau actuel pour t'éviter de saisir les * et de recopier vers le bas :

=MAP(F3:F;G3:G;lambda(n;m;(NB.SI(n;"*"&Affichage!$E$1&"*")>=1)))

Oui merci cette formule va me permettre de fluidifier la saisie en effet...

je ne connaissais pas du tout "Lambda"

Si quelqu'un trouve une solution pour filtrer en auto sur la meme page je suis preneur,

J'ai fait un petit script :

https://docs.google.com/spreadsheets/d/1oIeE_d6oSyRwZhEuHVTwA_f6HYcC3FGcgP6XNWAehFw/edit?usp=sharing

function cacherLignes() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  let feuille = ss.getSheetByName("Feuille 1");
  let donnees = feuille.getDataRange().getValues();

feuille.showRows(1, feuille.getMaxRows())

  donnees.forEach(function(ligne,index) {
    if(ligne[0] === false) {
      let plage = feuille.getRange(index +1, 1);
      feuille.hideRow(plage);
    }
     });

}

Soit patient, il y a un petit temps de latence avant l'affichage des modifications !

Il y a 2 déclencheurs pour le script (à l'ouverture et en cas de modifications)...

Bon week-end,

Fil.




Effectivement il y a une latence mais ça fonctionne (je l'ai associé a un bouton "rechercher") pour exécuter la fonction

Merci beaucoup

(j'avais enregistré une macro automatique utilisant le filtre de colonne Vrai/Faux mais cela ne fonctionnait pas)

image

l'entête de mon vrai tableau étant

image

Super, si ça te va !

Peux-tu clôturer le sujet, stp ?

Merci et bonne soirée.

Pour accélérer le traitement, tu peux modifier en A3 :

=MAP(query(F3:F;"select * where F is not null ");query(G3:G;"select * where G is not null ");lambda(n;m;(NB.SI(n;"*"&$F$1&"*")=1)))
Rechercher des sujets similaires à "macro masquer lignes contiennent caracteres"