Types de données utilisés par Excel
S’applique à: Excel 2013 | Office 2013 | Visual Studio
Microsoft Excel échange plusieurs types ANSI C/C++ et également certaines structures de données propres à Excel. Ceux-ci sont mentionnés ici pour fournir un contexte pour d’autres sections, et sont décrits en détail dans la rubrique xlfRegister (formulaire 1).
Types ANSI C/C++
Nombres
Toutes les versions d’Excel :
Double de 8 octets
[signed] short [int] : utilisé pour les valeurs booléennes et les entiers
unsigned short [int]
[signed long] int
Chaînes
Toutes les versions d’Excel :
[signed] char * : chaînes d’octets terminées par null d’un maximum de 255 caractères
unsigned char * : chaînes d’octets comptées de longueur allant jusqu’à 255 caractères
Introduit dans Excel 2007 :
- unsigned short * : chaînes Unicode d’un maximum de 32 767 caractères, qui peuvent être terminées par un caractère Null ou comptées sur la longueur
Tous les nombres de feuille de calcul dans Excel sont stockés comme doubles de sorte qu’il n’est pas nécessaire (et en réalité cela introduit une petite conversion) de déclarer de fonctions de complément lors de l’échange de types entier avec Excel.
Lorsque vous utilisez des types entiers, Excel vérifie que les entrées sont dans les limites du type et qu’elles échouent avec #NUM ! si elles sont en dehors de celles-ci. L’exception se produit lorsque vous inscrivez une fonction pour prendre un argument booléen implémenté à l’aide de short int. Dans ce cas, toute entrée non zéro est convertie en 1, et zéro est passé directement.
Structures de données propres à Excel
Toutes les versions d’Excel :
FP : structure de tableau à virgule flottante bidimensionnelle prenant en charge jusqu’à 65 356 lignes par le nombre maximal de colonnes prises en charge dans la version donnée d’Excel.
XLOPER : structure de données à plusieurs types qui peut représenter tous les types de données de feuille de calcul (y compris les erreurs), les entiers, les références de plage, les types de contrôle de flux de feuilles macros XLM et un type de données de stockage binaire interne.
Remarque
Les chaînes sont représentées sous forme de chaînes de longueur comptée de 255 caractères maximum.
Introduit dans Excel 2007 :
FP12 : structure de tableau à virgule flottante bidimensionnelle prenant en charge toutes les lignes et colonnes à partir d’Excel 2007.
XLOPER12 : structure de données multi-types qui peut représenter tous les types de données de feuille de calcul (y compris les erreurs), les entiers, les références de plage, les types de contrôle de flux de feuille de macro XLM et un type de données de stockage binaire interne.
Remarque
Les chaînes sont représentées sous forme de chaînes Unicode de longueur comptée de 32 767 caractères maximum.
Codes de type de données d’inscription
Les fonctions XLL sont inscrites à l’aide de la fonction API C xlfRegister, qui prend comme troisième argument une chaîne de lettres qui encode les types de retour et d’argument. Cette chaîne contient également des informations qui indiquent à Excel si la fonction est volatile, thread-safe (introduit dans Excel 2007), est équivalente à une feuille macro et si elle renvoie son résultat en modifiant un argument en place.
Le tableau suivant est reproduit et décrit plus en détail dans la rubrique xlfRegister (formulaire 1). Il est reproduit ici afin de fournir un contexte pour le reste de cette section. Par exemple, une fonction qui prend une chaîne Unicode longueur comptée (introduit dans Excel 2007) peut être décrite comme prenant un argument de type C%.
Type de données | Passer par valeur | Passer par référence (pointeur) | Commentaires |
---|---|---|---|
Booléen |
A |
L |
short (0 = False ou 1 = True) |
double |
B |
E |
|
char * |
C, F |
Chaîne d’octets ASCII se terminant par null |
|
unsigned char * |
D, G |
Chaîne d’octets ASCII de longueur comptée |
|
unsigned short * (à partir d’Excel 2007) |
C%, F% |
Chaîne de caractères larges Unicode se terminant par null |
|
unsigned short * (à partir d’Excel 2007) |
D%, G% |
Chaîne de caractères larges Unicode de longueur comptée |
|
unsigned short [int] |
H |
WORD |
|
[signed] short [int] |
I |
M |
16 bits |
[signed long] int |
J |
N |
32 bits |
Tableau |
O |
Passé comme trois arguments par référence : 1. short int *rows 2. short int *columns 3. double *array |
|
Tableau (introduit dans Excel 2007) |
O% |
Passé comme trois arguments par référence : 1. int *rows 2. int *columns 3. double *array |
|
FP |
K |
Structure de tableau à virgule flottante |
|
FP12 (introduit dans Excel 2007) |
K% |
Structure de tableau à virgule flottante à grande grille |
|
XLOPER |
P |
Tableaux et valeurs de feuille de calcul de type variable |
|
R |
Valeurs, tableaux et références de plage |
||
XLOPER12 (introduit dans Excel 2007) |
Q |
Tableaux et valeurs de feuille de calcul de type variable |
|
U |
Valeurs, tableaux et références de plage |
Les types C%, F%, D%, G%, K%, O%, Q et U étaient tous nouveaux dans Microsoft Office Excel 2007 et ne sont pas pris en charge dans les versions antérieures. Les types de chaînesF, F%, G et G% sont utilisés pour les arguments qui sont modifiés directement (modified-in-place). Lorsque les arguments XLOPER ou XLOPER12 sont inscrits comme types P ou Q respectivement, Excel convertit les références à cellule unique en valeurs simples et les références à plusieurs cellules en tableaux lorsqu’il les prépare.
Les types P et Q arrivent toujours dans votre fonction sous la forme d’un des types suivants : xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeMulti, xltypeMissing, or xltypeNil, mais pas xltypeRef ni xltypeSRef, car ceux-ci sont toujours déréférencés.
Le type O, qui représente réellement trois arguments sur la pile, a été introduit pour la compatibilité avec les DLL Fortran où les arguments sont passés par référence. Il ne peut pas être utilisé pour renvoyer une valeur sauf en déclarant l’argument comme une valeur de retour modify-in-place et en plaçant les résultats dans les valeurs référencées. Le type O % étend le type O dans Excel 2007 pour accéder aux tableaux couvrant des zones plus grandes que la grille Office Excel 2003.