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.