Évaluation des noms et autres expressions de formule de feuille de calcul (traduction automatique)

Dernière modification : vendredi 13 mars 2009

S’applique à : Excel 2010 | Office 2010 | VBA | Visual Studio

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Une des plus importantes fonctions qu’Excel expose via l’API C est la capacité de convertir en valeur ou tableau de valeurs toute formule de chaîne pouvant être légalement saisie dans une feuille de calcul. Cela est essentiel pour les commandes et fonctions XLL qui doivent lire le contenu de noms définis, par exemple. Cette capacité est exposée via la fonction xlfEvaluate, comme illustré dans cet exemple.

int WINAPI evaluate_name_example(void)
{
  wchar_t *expression = L"\016!MyDefinedName";
  XLOPER12 xNameText, xNameValue;
  xNameText.xltype = xltypeStr;
  xNameText.val.str = expression;

// Try to evaluate the name. Will fail with a #NAME? error
// if MyDefinedName is not defined in the active workbook.
  Excel12(xlfEvaluate, &xNameValue, 1, &xNameText);

// Attempt to convert the value to a string and display it in
// an alert dialog. This fails if xNameValue is an error value.
  Excel12(xlcAlert, 0, 1, &xNameValue);

// Must free xNameValue in case MyDefinedName evaluated to a string
  Excel12(xlFree, 0, 1, &xNameValue);
  return 1;
}

Notez que lorsque vous évaluez un nom de feuille de calcul, en soi ou dans une formule, vous devez faire précéder le nom de «! », au moins. Dans le cas contraire, Excel essaie de trouver le nom dans un espace de noms caché réservés pour les DLL. Vous pouvez créer et supprimer des noms DLL masqués à l'aide de la fonction xlfSetName (traduction automatique). Vous pouvez obtenir la définition de n'importe quel nom défini, qu'il s'agisse d'un nom DLL masqué ou un nom de feuille de calcul, à l'aide de la fonction xlfGetDef.

La spécification complète pour un nom de feuille de calcul prend la forme suivante :

='C:\example folder\[Book1.xls]Sheet1'!Name

Notez que Excel 2007 a introduit un certain nombre de nouvelles extensions de fichier. Vous pouvez omettre le chemin d'accès, le nom du classeur et le nom de feuille dans le cas où il n'existe aucune ambiguïté entre les classeurs ouverts dans cette session Excel.

L'exemple suivant évalue la formule COUNT(A1:IV65536) pour la feuille de calcul active et affiche le résultat. Notez la nécessité de la plage d'adresse avec le préfixe '!', qui est conforme à la convention de référence de plage dans des feuilles macro XLM. Le XLM API C suit la présente convention :

=A1 Une référence à la cellule A1 de la feuille macro en cours. (Non défini pour les XLL).

=!A1 Une référence à la cellule A1 de la feuille active (qui pourrait être une feuille de calcul ou une feuille macro)

=Sheet1!A1 Une référence à la cellule A1 dans la feuille spécifiée, la feuille Sheet1 dans ce cas.

=[Book1.xls]Sheet1!A1 Une référence à la cellule A1 de la feuille spécifiée dans le classeur spécifié.

Dans un XLL, une référence sans point d'exclamation non significatif (!) ne peut pas être convertie en une valeur. Il n'a pas de sens, car il n'y a aucune feuille macro en cours. Notez qu'un signe de début est égal à (=) est facultatif et est omis dans l'exemple suivant.

int WINAPI evaluate_expression_example(void)
{
    wchar_t *expression = L"\022COUNT(!A1:IV65536)";
    XLOPER12 xExprText, xExprValue;
    xExprText.xltype = xltypeStr;
    xExprText.val.str = expression;

// Try to evaluate the formula.
    Excel12(xlfEvaluate, &xExprValue, 1, &xExprText);

// Attempt to convert the value to a string and display it in
// an alert dialog. Will fail if xExprValue is an error.
    Excel12(xlcAlert, 0, 1, &xExprValue);

// Not strictly necessary, as COUNT never returns a string
// but does no harm.
    Excel12(xlFree, 0, 1, &xExprValue);
    return 1;
}

Vous pouvez également utiliser la fonction xlfEvaluate pour extraire l'ID de l'enregistrement d'une fonction XLL à partir de son nom enregistré, ce qui peut ensuite être utilisé pour appeler cette fonction à l'aide de la fonction xlUDF (traduction automatique).

Notes

Le nom enregistré peut être passé directement à la fonction xlUDF. Cela signifie que vous pouvez éviter d'avoir à évaluer le nom pour obtenir l'ID avant d'appeler xlUDF. Toutefois, si la fonction doit être appelée plusieurs fois, appeler à l'aide de l'enregistrement QU'ID est plus rapide.

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Voir aussi

Concepts

Évaluation d’expression et de feuille de calcul Excel (traduction automatique)

Autorisation des interruptions de l’utilisateur dans les opérations longues (traduction automatique)

Autres ressources

Mise en route avec le Kit de développement logiciel XLL Excel 2010 (traduction automatique)