Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Curiosité en utilisant les références de cellules en paramètres

5 réponses
Avatar
Franck
Bonjour,
Je fais face =E0 une curiosit=E9.

J'ai d=E9velopp=E9 un addin pour excel (avec Visual Studio.Net) qui
fonctionne impeccablement sur 99% des postes sur lesquels il est
install=E9. (win XP, Excel 2003)

Cet addin ajoute une liste de fonctions qui prennent des string en
param=E8tres de mani=E8re g=E9n=E9rale.

Installant cet add-in sur un serveur Windows 2000 Excel 2003, il
m'arrive un truc d=E9lirant.

si je tape dans une cellule la formule suivant : =3DMaformule(123)
la fonction marche tr=E8s bien.
Maintenant, si je met 123 dans la cellule A1 et que je fais =3D
Maformule(a1), ca plante !!!

Apparement, il n'interprete pas a1 comme une r=E9f=E9rence de cellule
mais comme un texte.

Les fonctions de base d'Excel n'ont pas ce probl=E8me.

Est-ce une option d'Excel ?
Si quelqu'un pouvait m'aiguiller ?

merci d'avance.

5 réponses

Avatar
Franck
Marrant,
ma fonction Maformule (strId as string) ne marche pas si je fais
=Maformule(a1)
mais fonctionne avec =Maformule(INT(a1))

Là j'y comprend plus rien.
Avatar
Franck
Encore meilleur, une fonction sans paramètres.
Je la tape et je prend un #VALUE dans la figure...
Avatar
Vincnet.
Bonjour...
Ces différents comportements sont pourtant assez logiques. La fonction macro
Maformule prend comme argument une chaîne de caractère.
Le vide n'est pas une chaîne de caractères... d'où un #VALUE! (ou alors
c'est l'un des calculs fait par ta macro qui renvoie le #VALUE!
Ensuite, A1 est à la fois une chaîne de caractère et la référence à une
plage de cellule. Comme ta formule va essayer de traiter le paramètre comme
une chaîne de caractère, c'est logique qu'elle prenne A1 et non le contenu de
A1 comme paramètre.
En revanche, INT(A1) renvoie un nombre qu'excel va savoir transformer en
chaîne de caractères et que pourra donc traiter Maformule.
Pour utiliser une cellule comme argument, il faudrait plutôt utiliser (ByVal
strId As Range) ou (ByRef strId As Range)...
--
A+

V.



Encore meilleur, une fonction sans paramètres.
Je la tape et je prend un #VALUE dans la figure...




Avatar
Franck
Bonjour,
Dans ce cas, quel type de paramètres dois-je passer à ma fonction
pour que le user puisse saisir soit directement dans la formule, soit
en utilisant une référence.

Je précise qd mm que les fonctions dans leur état actuel fonctionnent
partout sauf sur cette machine. C'est cela que je trouve curieux. Je ne
comprend pas pourquoi il interprete A1 comme un string et non une
référence alors que sur les autres machines c'est le cas.
Avatar
Franck
Bonjour,
Dans ce cas, quel type de paramètres dois-je passer à ma fonction
pour que le user puisse saisir soit directement dans la formule, soit
en utilisant une référence.

Je précise qd mm que les fonctions dans leur état actuel fonctionnent
partout sauf sur cette machine. C'est cela que je trouve curieux. Je ne
comprend pas pourquoi il interprete A1 comme un string et non une
référence alors que sur les autres machines c'est le cas.