Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.Calculatedans 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.
- Si vous générez automatiquement des métadonnées JSON, utilisez la
@supportSyncbalise JSDoc. - Si vous créez manuellement des métadonnées JSON, utilisez le
"supportSync": trueparamètre dans l’objet"options"de votre fichier functions.json . - Si la fonction utilise
Excel.RequestContext, appelez lasetInvocationméthode deExcel.RequestContextet passez l’objetCustomFunctions.Invocation. Pour obtenir un exemple, consultez l’exemple de code.
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];
}