Partager via


Problèmes connus dans le développement Excel XLL

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

Cette rubrique décrit les problèmes connus dans Microsoft Excel que vous pouvez rencontrer dans le développement XLL.

Annulation de l’inscription des fonctions et commandes XLL

Lorsqu’un XLL inscrit une fonction ou une commande, Excel crée un nom pour la ressource et associe une référence à la fonction DLL à ce nom. Le nom provient du quatrième argument, pxFunctionText, de la fonction xlfRegister . Ce nom est masqué dans les boîtes de dialogue normales pour la gestion des noms de feuille de calcul. Pour annuler l’inscription d’une fonction ou d’une commande, vous devez supprimer le nom à l’aide de la fonction xlfSetName , en transmettant le nom mais en ne transmettant pas de définition. Toutefois, un bogue l’empêche de supprimer le nom des listes de l’Assistant Fonction.

Troncation de chaîne de description de l’argument dans l’Assistant Fonction

Le paramètre pxArgumentHelp1 et tous les paramètres suivants de la fonction xlfRegister sont des chaînes facultatives qui correspondent aux arguments de la fonction XLL. L’Assistant Fonction les affiche pour fournir de l’aide dans la boîte de dialogue de construction d’arguments. Parfois, Excel tronque la chaîne qui correspond à l’argument final par un ou deux caractères lors de son affichage dans la boîte de dialogue. Vous pouvez éviter cela en ajoutant une « chaîne vide » supplémentaire comme dernier paramètre « aide d’argument » de votre inscription de fonction.

Limitation de l’étendue des noms binaires

Les noms binaires et leurs données ne peuvent être récupérés que lorsque la feuille de calcul qui était active au moment de leur création est à nouveau active. Étant donné que les fonctions de feuille de calcul ne peuvent pas activer les feuilles de calcul dans un classeur (seules les commandes peuvent le faire), les applications de noms binaires sont très limitées. Si vous avez une commande appelée uniquement à partir d’une feuille de calcul particulière, par exemple, vous pouvez utiliser un nom binaire pour stocker les données liées aux commandes.

xlSet et Workbooks avec des formules matricielles

Dans Excel 2003 et les versions antérieures, la fonction xlSet échoue si vous essayez d’attribuer des valeurs à une plage d’une feuille de calcul qui n’est pas la feuille de calcul active, où la plage équivalente sur la feuille active contient une formule de tableau. Dans ce cas, Excel affiche le message « Vous ne pouvez pas modifier une partie d’un tableau ». Ce problème a été résolu dans Excel 2007.

Les références circulaires sont tolérées dans les tables de données

Actuellement, Excel ne génère pas d’erreur si le calcul sur lequel repose une table de données fait référence à un élément de la table elle-même. Aussi improbable que ce scénario puisse être, vous devez être prudent lorsque vous créez ou modifiez des formules utilisées pour calculer des valeurs de table de données.

Conversion d’un XLOPER12 entier en XLOPER

Étant donné que le type entier xltypeInt est un entier signé 32 bits dans le type de données XLOPER12 , mais qu’il ne s’agit que d’un entier signé 16 bits dans le type de données XLOPER , il est possible que certaines valeurs entières XLOPER12 ne puissent pas être contenues dans un entier XLOPER. Lorsque Excel convertit ce type en interne, il contournait ce problème en convertissant le type en xltypeNumXLOPER à virgule flottante.

La fonction Framework XLOper12ToXLOper reflète ce comportement pour être cohérent avec Excel en interne. Lorsque vous appelez cette fonction, vous ne devez pas supposer que le XLOPER retourné sera toujours xltypeInt ; la lecture my_xloper.val.w donne une valeur false si le type my_xloper est xltypeNum.

Renvoi de XLOPER ou XLOPER12 en modifiant les arguments sur place

Excel autorise l’inscription de fonctions qui retournent un XLOPER ou un XLOPER12 en modifiant un argument sur place. Toutefois, si un argument XLOPER/ XLOPER12 pointe vers la mémoire et que le pointeur est alors remplacé par la valeur de retour de la fonction DLL, Excel peut fuiter la mémoire. Excel n’affiche pas d’erreur, mais peut éventuellement se bloquer. En outre, si la DLL a alloué de la mémoire pour la valeur de retour, Excel peut essayer de libérer cette mémoire, ce qui peut entraîner un blocage immédiat de l’application. Par conséquent, vous ne devez pas modifier xlOPER/ XLOPER12 arguments en place. Tous les arguments XLOPER ou XLOPER12 doivent être traités comme strictement en lecture seule.

Pour plus d’informations, reportez-vous à la rubrique Gestion de la mémoire dans Excel.

Voir aussi

XLOper12ToXLOperDéveloppement de XLLs Excel
Référence des fonctions XLL SDK API Excel 2013
Gestion de la mémoire dans Excel