Dans les feuilles de calcul de grande taille, il est souvent pratique de figer une ou plusieurs lignes et colonnes. On dit que les volets ont été figés. La zone figée restera visible lorsque vous ferez défiler la feuille de calcul vers le bas ou vers la droite.
Il est possible de figer et de libérer les volets avec quelques instructions JavaScript/TypeScript.
Dans cet exemple, si les volets ne sont pas figés, la première ligne et la première colonne sont figées. Dans le cas contraire, la ligne et la colonne figées sont libérées.
async function figer() { await Excel.run(async function (context) { let copie = context.workbook.worksheets.getItem("copie"); let panes = copie.freezePanes; const frozen = panes.getLocationOrNullObject(); frozen.load("getRow"); await context.sync(); if (frozen.isNullObject) { panes.freezeRows(1); panes.freezeColumns(1); } else panes.unfreeze(); }); }
Après avoir stocké la feuille concernée dans la variable copie :
let copie = context.workbook.worksheets.getItem("copie");
On récupère l’objet freezePanes qui permettra de figer des lignes et des colonnes :
let panes = copie.freezePanes;
Puis la zone figée avec la méthode getLocationOrNullObject() :
const frozen = panes.getLocationOrNullObject();
Pour que cette méthode retourne la zone figée ou un objet null, vous devez lire une propriété de l’objet frozen (getRow par exemple) :
frozen.load("getRow"); await context.sync();
Si aucune ligne n’est figée dans la feuille, frozen est un objet null. Dans ce cas, la première ligne et la première colonne sont figées à l’aide des méthodes freezeRows() et freezeColumns() :
if (frozen.isNullObject) { panes.freezeRows(1); panes.freezeColumns(1); }
Dans le cas contraire, les lignes et colonnes figées sont libérées :
else panes.unfreeze();