Regrouper des feuilles Excel

salut

image

j'ai un fichier avec plusieurs feuilles et je voudrais savoir si c'est possible de regrouper ces feuilles, et une fois que je click sur une feuille tout les autre feuille associé s'ouvre directement.

image

comme ici une fois que je click sur regroupement je voudrais que les autre feuille s'ouvre, et tand que je n'ais pas appuyer sur un regroupement avoir juste

image

merci d'avance et dsl de l'hortographe.

Bonsoir,

pour espérer avoir une réponse il faudrait poster la demande dans le bon forum...Ici vous êtes en "discutions générales"...

Sinon si vous connaissez un peu le VBA, alors sur vos feuilles "regroupement" dans le code "activate" vous demandez d'afficher les feuilles voulues tout en masquant les autres feuilles autre que "regroupement".

@ bientôt

LouReeD

Bonsoir,

voici un exemple de code :

Private Sub Worksheet_Activate()
  ' on arrête la mise à jour de l'écran
  Application.ScreenUpdating = False
  ' on masque toutes les feuilles autre que regroupement
  For Each sh In Worksheets
    If Not sh.Name Like "Regroupement*" Then sh.Visible = False
  Next
  ' on affiche les feuilles du regroupement1
  tablo = Array("Feuil10", "Feuil11", "Feuil12")
  For i = 0 To UBound(tablo)
    Sheets(tablo(i)).Visible = True
  Next i
End Sub

A l'activation de la feuille regroupement (ici la 1), on masque toutes les feuilles ne correspondant pas à un "regroupement", puis on affiche las feuilles correspondant au regroupement 1, il suffit de modifier les valeur de l'Array pour cibler les feuilles voulues.

Le fichier de présentation de cet exemple :

12regroupement.xlsm (27.40 Ko)

@ bientôt

LouReeD

Bonjour,

Voici ma proposition. Tu as une feuille "parametres" dans laquelle tu précises les dépendances de tes feuilles ou son affichage constant puis le code affichera ou masquera les feuilles automatiquement à chaque changement de feuilles en fonction de ces choix. Dans le fichier j'ai mis des exemples rapides par rapport à tes images. A toi de compléter.

Teste et dis nous

11choix-feuilles.xlsm (35.73 Ko)

Bonjour

merci pour vos réponse oui en BVA j'ai réussi mais l'Excel devra ce mettre sur un document OneDrive (ou les BVA ne fonctionnement pas)

j'ai chercher un peut et apparemment ce n'est pas possible juste avec les fonction d'Excel

Exact. Impossible sans VBA et execution VBA impossible sur OneDrive.

Par contre tu peux stocker ton fichier avec VBA et l'utilisateur pourra utiliser le VBA après avoir télécharger le fichier (et le remettre après ses modifications).

Moi je n'ai vu nulle part que c'était sans VBA ...

@ bientôt

LouReeD

Salut à tous,

Alternativement vu que le classeur est bien colorié, on peut Looper sur les feuilles et afficher celles dont la couleur correspond à celle cliquée. Ca evite l'étape du paramétrage (ou plutot ça la déplace dans le coloriage).

Je sais pas si les Office Scripts marchent dans votre cas, ça pourrait etre une alternative. Je vais regarder si je sais faire ça.

"Moi je n'ai vu nulle part que c'était sans VBA ..."

Moi non plus...

Toute façon impossible sans VBA alors...

Bonjour à tous,

Bon je ne sais toujours pas si on peut lancer un script depuis un event comme en VBA (peut etre qu'il faut passer par PowerAutomate), du coup pour le moment je vous fournis seulement le code des fonctions. Vous pouvez les assigner à des boutons et les lancer en cliquant sur ces derniers.

Ce premier script affiche les feuilles de meme couleur que la feuille active et celles contenant le mot "regroupement" :

function main(workbook: ExcelScript.Workbook) {
    switchSheets(workbook.getActiveWorksheet(), workbook);
}

function switchSheets(baseSht: ExcelScript.Worksheet, workbook: ExcelScript.Workbook)
{
  //Retrieve clickedSheet color
  const baseCol: string = baseSht.getTabColor();

  //Assign worksheet collection to a variable
  const sheets: ExcelScript.Worksheet[] = workbook.getWorksheets();

  //Loop through all worksheets in the worksheet collection
  sheets.forEach(ws => {
    // Without visibility reset before, the sheets remain hidden
    ws.setVisibility(ExcelScript.SheetVisibility.visible);
    if (ws.getTabColor() == baseCol || ws.getName().toUpperCase().includes("REGROUPEMENT")) {
      ws.setVisibility(ExcelScript.SheetVisibility.visible);
    } else {
      ws.setVisibility(ExcelScript.SheetVisibility.hidden);
    };
  });
}

Ce second script affiche toutes les feuilles :

function main(workbook: ExcelScript.Workbook) {
  const iniSht: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  showAllSheets(workbook);
  iniSht.activate();
}

function showAllSheets(workbook: ExcelScript.Workbook) {
  workbook.getWorksheets().forEach(
      ws => ws.setVisibility(ExcelScript.SheetVisibility.visible)
  );
}

Ci-joint un classeur pour tester, mais attention les scripts sont sauvegardés dans le cloud donc vous devez les ré-ajouter.

EDIT : si vous installez cet add-in, vous pouvez récupérer les events de type "feuille activée" pour lancer le script automatiquement.

Rechercher des sujets similaires à "regrouper feuilles"