Problème dans une macro

Bonjour,

Je suis entrain de créer une macro Google Sheets, voici le script

function MotsCles() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains('CLE5')
    .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1, criteria);
};

C'est une macro qui utilise un filtre automatique dans la colonne A de la feuille 2 sur le mot clé CLE5.

Je souhaiterais saisir une valeur dans la feuille 1 dans la cellule H5 et filtrer automatiquement sur cette saisie de la valeur de la cellule H5

J'ai donc remplacé la ligne .whenTextContains('CLE5') par .whenTextContains('='Moteur de Recherche'!H5').

Moteur de Recherche étant ma Feuille 1

Et cela ne fonctionne pas.

Je débute en macro et là je tourne en rond depuis hier.

Quelqu'un pourrait il m'aider ?

Merci de votre support.

Slt Larent et bienvenue sur le Forum,

à tester:

function MotsCles() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Moteur de Recherche");
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  var valeurH5 = sh.getRange(5,8).getValue();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains('valeurH5') /* sinon essaie .whenTextContains("valeurH5") */
    .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1, criteria);
};

Merci de votre réponse, c'est très gentil mais les 2 propositions ne fonctionnent pas.

Je re-solllicite votre aide

Bonjour,

Pour mieux tester:

@++

Bonjour,

voici le fichier Google Sheets 'Finalisation Macro'

Et les 3 macros déjà créées....

Merci encore pour votre aide

Re,

je viens de tester et ca marche, essaie comme ca

function MotsCles() { 
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Moteur de Recherche");
  var valeurH5 = sh.getRange(5,8).getValue();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains(valeurH5)
    .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(1, criteria)   
};

Bonne journée

Merci c'est génial, cela fonctionne en effet.

Peux-tu m'expliquer car je ne suis qu'au début de la construction de la macro et pour bien fonctionner, j'ai besoin de comprendre ce que je fais ?

Merci encore

oui bien sûr sans souci:

1- on defini/declare dans la variable sh la fueille voulue ici "Moteur de Recherche"

var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Moteur de Recherche");

2- on defini/declare dnas la variable valeurH5 la céllule voulue ici H5 qui a les coordonnées 5 (ligne) et 8 (colonne)

var valeurH5 = sh.getRange(5,8).getValue();

3- et on récupère le contenu de notre variable valeurH5 qui contient le contenu de la céllule H5

.whenTextContains('valeurH5')

à la prochaine

Merci,

tu as été au top

Très très sympa.

A la prochaine

Hello,

je reviens vers toi car je souhaite maintenant Créer une Macro 'Automatisation Mots Cles'

1) Sur Feuille 'Base de Donnees' Lancer macro Annulation Filtre

2) Sur Feuille 'Moteur de Recherche' Rentrer Choix 1 dans cellule H5

3) Sur Feuille 'Base de Donnees' Lancer Macro 'Mot Cles'

4) Copier le résultat de la Feuille 'Base de Donnees' dans la Feuille 'Résultat' en maintenant Colonne B, C, D ,E soit

(Numéro Série SN, Libellé SN, Texte de Saisie, Source) toute en mettant la ligne 1 en Gras

J'ai créé ce script

function AutomatisationMotsCles() {

var spreadsheet = SpreadsheetApp.getActive();

spreadsheet.getRange('A1').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base de Donnees'), true);

AnnulationFiltre();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Moteur de Recherche'), true);

spreadsheet.getRange('H5').activate();

spreadsheet.getCurrentCell().setValue('CLE5');

spreadsheet.getRange('H6').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base de Donnees'), true);

MotsCles();

spreadsheet.getRange('B:E').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Résultat'), true);

spreadsheet.getRange('\'Base de Donnees\'!B:E').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

spreadsheet.getRange('1:1').activate();

spreadsheet.getActiveRangeList().setFontWeight('bold');

};

Je souhaiterai Saisir n'importe quelle autre valeur que CLE5 en H5 Sur la Feuille 'Moteur de Recherche' et pour l'instant je sèche

As-tu une idée ?

Je t'envoie le fichier en Pièce jointe.

Merci pour tout

Surtout n'hésite pas à remettre en cause ma vision de la macro si tu trouves que je la complexifie trop. Donne moi ton avis STP.

Merci

Slt Laurent,

est ce qu'à chaque fois qu'il copie les resultats filtrés, il doit tout remplacer sous l'onglet résultat? ou bien il doit ajouter ce qu'a été copier sous les les lignes déjà existantes sour l'onglet résultat?

De préférence ouvre s'il te plaît un nouveau sujet, car ce sujet est déjà fermé

Salut,

il doit tout remplacer.

Désolé, je n'ai pas vu que le sujet était fermé, tu vois ça où ?

J'ouvre de suite un nouveau post.

Merci de ton support

Rechercher des sujets similaires à "probleme macro"