Liste de toutes le feuilles sur une seule

Bonjour

J'ai un classeur avec beaucoup de feuilles

Je souhaiterai sur une feuille, afficher automatiquement le nom de chacune des feuilles existantes et qu'un clic m'envoie sur la feuille concernée.

Merci d'avance

Bonjour,

A tester :

Sub CreerMenuOnglets()

Dim I As Integer

    Application.ScreenUpdating = False
    If Sheets(1).Name <> "ListeFeuilles" Then Sheets.Add before:=Sheets(1) Else Sheets(1).Cells.Delete
    With Sheets(1)
        .Name = "ListeFeuilles"
        .Range("A1") = "Feuilles"
        .Range("A1").AutoFilter
        For I = 2 To Sheets.Count
          .Cells(I, 1) = Sheets(I).Name
          .Hyperlinks.Add .Cells(I, 1), "", "'" & .Cells(I, 1) & "'!A1", , .Cells(I, 1).Value
          If Sheets(I).Tab.ColorIndex <> xlNone Then
             .Cells(I, 1).Interior.Color = Sheets(I).Tab.Color
          End If
        Next I
    End With
    Application.ScreenUpdating = True

End Sub

bonjour

@Eric Kergresse

cette macro est pour Excel

est ce pour GSheets ou Excel ?

Bonjour,

@EV56 : tu as déjà la liste en cliquant en bas à gauche sur

image

Quand j'ai vraiment beaucoup d'onglets, j'utilise ceci (idée de base = Gilbert que je salue)

Code gs

function onOpen(e) {
  SpreadsheetApp.getUi()
    .createMenu('Δ Parcourir les feuilles Δ')
    .addItem('Ouvrir la fenêtre ...', 'naviguer')
    .addToUi();
}

function naviguer(){
  var ui = SpreadsheetApp.getUi();
  var html = HtmlService
    .createTemplateFromFile("index")
    .evaluate();
  html.setTitle("Navigation entre onglets :");
  ui.showSidebar(html);
} 

function choixFeuille(txt){
  try {
    var valide = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(txt).activate();
    txt ="";
  }
  catch(err) {
    var valide = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    Browser.msgBox('Erreur ' + err + ' !');
   }
};

function listeFeuilles() {
  var out = new Array()
  var f = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<f.length ; i++) out.push( [ f[i].getName(), f[i].getTabColor() ] )
  return out 
}

code index.html

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
  <style>body{margin:12px;}</style>
</head>

<body>

  <? var data = listeFeuilles(); ?>
  <form>
    <? for (var i = 0; i < data.length; i++) { ?>
    <input type="radio" name="onglet" onclick="selectionner()" value="<?= data[i][0] ?>"><span style='color:<?= data[i][1] ?>'>■ </span><?= data[i][0] ?><br>
    <? } ?>
  </form>

  <div class="sidebar bottom">
    <span class="gray">Mike Steelson 2021</span>
  </div>

  <script>
    function selectionner() {
      var x = (document.forms.length)-1;
      var onglet = document.forms[x];
      for (var i = 0; i < onglet.length; i++) {
        if (onglet[i].checked) {var txt = onglet[i].value}
      }
      google.script.run.choixFeuille(txt)
    };
  </script>

</body>
</html>

Désolé, je n'ai pas fait attention.

Désolé, je n'ai pas fait attention.

tu es le bienvenu dans la rubrique GSheets ...

Bonjour Steelson,

Merci pour ton accueil , mais bien que j'ai construit mon site perso avec Google, je ne maitrise pas du tout le code.

Cordialement.

Ou utiliser cette fonction personnalisée pour avoir le nom de la feuille recherché

/**
 * Crée une fonction personnalisée.
 * @constructor
 * @param {nombre} idx - Le numéro de la feuille.
 * @return le nom de la feuille
 * @customfunction
 */
function sheetName(idx) {
  if (!idx)
    return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
  else {
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
    var idx = parseInt(idx);
    if (isNaN(idx) || idx < 1 || sheets.length < idx)
      throw "Paramètre non valide (il doit s'agir d'un nombre compris entre 0 et "+sheets.length+")";
    return sheets[idx-1].getName();
  }
}

@EV56, besoin d'aide encore ?

oui effectivement merci

Rechercher des sujets similaires à "liste toutes feuilles seule"