Cellule permettant de " ctrl + f "

Bonjour,

toujours sur mon fichier de commande, j'aimerais savoir si c'est possible de créer une cellule avec une sorte de barre de recherches qui permettrait comme son nom l'indique de rechercher une référence par exemple dans le fichier. Comme un "ctrl f" mais en forme barre de recherche qui se placerait à la place de "faire ctrl f pour chercher l'article dans la feuille.

Merci a tous

image

Salut Onox,

Si cela pour t'aider, j'utilise ce code :

Tu peux ensuite insérer une image ou créer un dessin pour lié ce code à une image.

Bonne journée !

Edit : Il y a probablement plus simple comme code, peut être moins long à charger.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Crée un menu personnalisé
  ui.createMenu('Barre de recherche')
      .addItem('Rechercher', 'showSearchPrompt')
      .addToUi();
}

function showSearchPrompt() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('Recherche', 'Entrez le terme de recherche:', ui.ButtonSet.OK_CANCEL);

  // Vérifie si l'utilisateur a cliqué sur "OK"
  if (response.getSelectedButton() == ui.Button.OK) {
    var searchTerm = response.getResponseText();
    searchAndSelectFirstMatch(searchTerm);
  }
}

function searchAndSelectFirstMatch(searchTerm) {
  var found = false; // Déclarer la variable found ici
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var dataRange = sheet.getRange('B6:J276');
  var data = dataRange.getValues();

  // Diviser la chaîne de recherche en mots individuels
  var searchWords = searchTerm.toLowerCase().split(" ").filter(Boolean);

  // Parcourt chaque ligne et chaque cellule dans la plage spécifiée
  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < data[i].length; j++) {
      var cellValue = data[i][j].toString().toLowerCase();
      var match = true;
      // Vérifie si chaque mot de recherche est présent dans la cellule
      for (var k = 0; k < searchWords.length; k++) {
        if (cellValue.indexOf(searchWords[k]) === -1) {
          match = false;
          break;
        }
      }
      // Si tous les mots de recherche sont trouvés dans la cellule, sélectionnez la cellule
      if (match) {
        var cell = sheet.getRange(i + 6, j + 2); // Ajuste les indices pour correspondre à la plage B6:J276
        sheet.setActiveRange(cell);
        found = true;
        return;  // Quitte la fonction après avoir sélectionné la première correspondance
      }
    }
  }

  // Si aucun résultat n'est trouvé
  if (!found) {
    SpreadsheetApp.getUi().alert('Aucun résultat trouvé pour: ' + searchTerm);
  }
}

Merci de ta réponse, malheureusement après avoir instauré le code et adapté à mon tableau (j’espère) ça ne marche pas.

En fait je ne sais pas ce qui est censé se produire et donc je n'arrive pas à bien adapter le code je pense. J'ai simplement modifier les cellules dans le sheet.getRange().

Dans la logique ce que j'aimerais c'est que mon programme puisse afficher une barre de recherches en "C1" et/ou "B1" pour pouvoir rechercher un article avec soit son code article (ex A65201) soit sa désignation (ex 220 L FUT PE OT ONU).

Merci de votre compréhension

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Crée un menu personnalisé
  ui.createMenu('Barre de recherche')
      .addItem('Rechercher', 'showSearchPrompt')
      .addToUi();
}

function showSearchPrompt() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('Recherche', 'Entrez le terme de recherche:', ui.ButtonSet.OK_CANCEL);

  // Vérifie si l'utilisateur a cliqué sur "OK"
  if (response.getSelectedButton() == ui.Button.OK) {
    var searchTerm = response.getResponseText();
    searchAndSelectFirstMatch(searchTerm);
  }
}

function searchAndSelectFirstMatch(searchTerm) {
  var found = false; // Déclarer la variable found ici
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var dataRange = sheet.getRange('B3:B123');
  var data = dataRange.getValues();

  // Diviser la chaîne de recherche en mots individuels
  var searchWords = searchTerm.toLowerCase().split(" ").filter(Boolean);

  // Parcourt chaque ligne et chaque cellule dans la plage spécifiée
  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < data[i].length; j++) {
      var cellValue = data[i][j].toString().toLowerCase();
      var match = true;
      // Vérifie si chaque mot de recherche est présent dans la cellule
      for (var k = 0; k < searchWords.length; k++) {
        if (cellValue.indexOf(searchWords[k]) === -1) {
          match = false;
          break;
        }
      }
      // Si tous les mots de recherche sont trouvés dans la cellule, sélectionnez la cellule
      if (match) {
        var cell = sheet.getRange(i + 6, j + 2); // Ajuste les indices pour correspondre à la plage B6:J276
        sheet.setActiveRange(cell);
        found = true;
        return;  // Quitte la fonction après avoir sélectionné la première correspondance
      }
    }
  }

  // Si aucun résultat n'est trouvé
  if (!found) {
    SpreadsheetApp.getUi().alert('Aucun résultat trouvé pour: ' + searchTerm);
  }
}
Rechercher des sujets similaires à "permettant ctrl"