Partager via


Autorisation des interruptions utilisateur dans les opérations de longue durée

S’applique à: Excel 2013 | Office 2013 | Visual Studio

Même si Windows utilise le multitâche préemptif, où l’exécution de vos fonctions ou commandes peut prendre beaucoup de temps, il est recommandé de laisser du temps au système d’exploitation de temps en temps pour l’aider à planifier des tâches simultanées. À l’aide des appels Windows natifs, vous pouvez le faire à l’aide de la fonction de veille. À l’aide de l’API C, vous pouvez le faire à l’aide de la fonction xlAbort, qui non seulement génère le processeur pendant un instant, mais vérifie également si l’utilisateur a appuyé sur la touche Annuler, Échap.

La fonction xlAbort permet donc à votre code de case activée si l’utilisateur souhaite mettre fin au processus, effectuer le nettoyage nécessaire, puis retourner le contrôle à Excel. La fonction vous permet également d’effacer la condition d’arrêt. Cela permet à vos commandes d’afficher une boîte de dialogue pour vérifier si l’utilisateur souhaite mettre fin à la commande. Si l’utilisateur ne souhaite pas mettre fin à la commande, l’appel de la fonction xlAbort avec l’argument FALSE efface l’arrêt. (L’argument par défaut est TRUE , qui vérifie simplement la condition mais ne l’efface pas.)

Vous pouvez appeler la fonction xlAbort à partir d’une fonction définie par l’utilisateur (UDF) ou à partir d’une commande XLL. Dans une fonction définie par l’utilisateur, lorsque la fonction xlAbort retourne TRUE, après avoir détecté un arrêt utilisateur, vous raccourcissez généralement le calcul de la fonction et retournez une valeur pour indiquer que le calcul n’a pas été effectué, par exemple une erreur ou zéro. Vous n’effaceriez pas la condition d’arrêt afin que d’autres instances de fonctions longues qui case activée également cette condition s’arrêtent également. Excel efface implicitement cette condition à la fin d’un recalcul.

Lorsque vous détectez une condition d’arrêt dans une commande, vous effacez généralement la condition en appelant à nouveau la fonction xlAbort avec l’argument FALSE, bien qu’Excel efface implicitement cette condition lorsqu’une commande se termine.

Voir aussi

Fonctions de l’API C à appeler à partir d’un fichier DLL ou XLL
Recalcul multithread dans Excel
Développement de XLL de Excel 2013
Accès à l’instance Excel et aux handles de fenêtre principaux