Partager via


Fonctions personnalisées synchrones (préversion)

Remarque

Les fonctions personnalisées synchrones sont disponibles en préversion publique et sont susceptibles d’être modifiées en fonction des commentaires. N’utilisez pas de fonctions personnalisées synchrones dans un complément de production.

Pour utiliser cette fonctionnalité, vous devez utiliser la préversion de la bibliothèque d’API JavaScript Office à partir du réseau de distribution de contenu (CDN)Office.js. Le fichier de définition de type pour la compilation et la IntelliSense TypeScript se trouve aux CDN et DefinitelyTyped. Vous pouvez installer ces types avec npm install --save-dev @types/office-js-preview .

Les fonctions personnalisées synchrones permettent aux processus d’évaluation et de mise en forme conditionnelle de s’exécuter simultanément dans Excel avec la fonction personnalisée. Activez la prise en charge synchrone lorsque votre fonction personnalisée doit s’exécuter en tandem avec l’un des processus Excel répertoriés dans cet article. Les fonctions personnalisées qui ne prennent pas en charge les opérations synchrones retournent une erreur telle que #CALC! ou #VALUE! lorsqu’elles s’exécutent en même temps que ces processus Excel.

Avertissement

Les fonctions personnalisées synchrones ne prennent pas en charge les opérations d’écriture avec les API JavaScript Office, telles que l’utilisation Range.values de pour définir une valeur de cellule. L’appel d’une opération d’écriture dans une fonction personnalisée synchrone peut entraîner le gel d’Excel.

Processus Excel pris en charge par les fonctions personnalisées synchrones

Les actions et processus suivants fonctionnent avec des fonctions personnalisées synchrones.

Actions d’évaluation prises en charge

  • Sélectionnez Formules, puis Évaluer la formule dans Excel.
  • Sélectionnez Formules, puis Insérer une fonction dans Excel.
  • En mode d’édition de cellule, en sélectionnant une partie d’une formule et en utilisant F9 pour afficher les résultats de calcul partiels.
  • Méthode Application.Calculate dans VBA.

Actions de mise en forme conditionnelle prises en charge

La liste suivante s’applique aux actions de mise en forme conditionnelle déclenchées par l’interface utilisateur Excel et les API JavaScript Office.

  • Créez une règle.
  • Modifier des règles.
  • Supprimer des règles.
  • Réorganiser les règles.
  • Modifiez la plage « S’applique à ».
  • Activez ou désactivez « Arrêter si true ».
  • Effacez toutes les règles.
  • Coupez et collez des cellules qui contiennent une mise en forme conditionnelle.
  • Copiez et collez les cellules qui contiennent une mise en forme conditionnelle.

Remarque

Lorsqu’une fonction personnalisée synchrone prend beaucoup de temps, Excel peut bloquer temporairement l’interface utilisateur en attendant le résultat. Pour éviter les interruptions prolongées, les utilisateurs peuvent annuler l’exécution de la fonction à tout moment en utilisant la touche Échap ou en sélectionnant n’importe où en dehors de la cellule ou de la boîte de dialogue.

Activer la prise en charge synchrone dans votre complément

Pour prendre en charge les scénarios synchrones dans votre complément, procédez comme suit.

Importante

Les fonctions personnalisées synchrones ne peuvent pas être des fonctions de streaming ou volatiles . Si vous utilisez la @supportSync balise avec @volatile des balises ou @streaming , Excel ignore la prise en charge synchrone. La prise en charge des volatiles ou de la diffusion en continu est prioritaire.

Exemple de code

L’exemple de code suivant montre comment créer une fonction personnalisée synchrone.

/** 
 * A synchronous custom function that takes a cell address and returns the value of that cell.
 * @customfunction
 * @supportSync
 * @param {string} address The address of the cell from which to retrieve the value.
 * @param {CustomFunctions.Invocation} invocation Invocation object.
 * @returns The value of the cell at the input address.
 */ 
export async function getCellValue(address, invocation) {
  const context = new Excel.RequestContext();
  context.setInvocation(invocation); // The `invocation` object must be passed in the `setInvocation` method for synchronous functions.

  const range = context.workbook.worksheets.getActiveWorksheet().getRange(address);
  range.load("values");

  await context.sync(); 
  return range.values[0][0];
}

Voir aussi