Ceci est une réflexion suite à un problème résolu récemment.
Lorsque vous écrivez une fonction en Basic destinée à être utilisée dans une formule de cellule, vous n'avez pas toute liberté pour le nom de votre fonction : Calc ne doit pas l'interpréter comme une autre entité.
Quelques exemples...
____________________
Vous êtes chercheur en biologie, et vous avez concocté une fonction relative à l'ADN. Vous l'avez appelée ADN2750().
Code : Tout sélectionner
Function ADN2750(v)
ADN2750 = v*10
End Function
Vous ne devez pas utiliser un nom de fonction pris dans la série A1 à AMJ1048576
__________________
Votre tableur contient des relevés de température, pression, humidité, etc. À partir de ces données météo vous concoctez une fonction complexe qui renverra une indication météo. Vous choisissez un nom de fonction en rapport avec votre sujet:
Code : Tout sélectionner
Function Temps(p, h, a, b, c) As String
' ici un calcul très compliqué...
End Function
Calc semble vous guider dans l'écriture des arguments. Mais si vous persistez vous aurez Err: 504 Erreur dans la liste de paramètres
Pourquoi ? Vous avez oublié que TEMPS() est une fonction de Calc, dans la catégorie Date et heure.
Celle-là était simple, mais connaissez-vous vraiment tous les noms de fonctions Calc ?
Ne croyez pas vous en sortir facilement avec un nom anglais, si vous travaillez en international. S'il correspond à une fonction Calc de langue anglaise, un utilisateur anglo-saxon tombera sur le problème.
___________________
Votre tableur contient des noms d'élèves, avec leurs notes. Vous avez écrit une fonction CLASSER() qui renvoie le classement de l'élève en fonction de ses notes.
Tout ceci marche bien, depuis des années.
Et puis un jour, un élève se présente, il s'appelle : Classer. Et la fonction ne veut plus marcher ! Et votre tableau se met à sortir des erreurs #REF! Pourquoi ? Parce que vous avez enregistré votre classeur avec la recherche automatique des colonnes et des lignes. Dans ce cas, Calc recherche si le nom indiqué est dans une cellule, et l'utilise alors comme une référence à cette cellule. Ce mécanisme très vicieux (probablement copié de Excel) est à désactiver. Cette coche peut être désactivée pour tout nouveau document (en utilisant un modèle), mais son état est mémorisé dans le document, qui peut avoir été écrit par une autre personne sur un autre ordinateur.
_____________
Enfin, les principes de programmation Basic s'appliquent. Notamment, le nom de votre fonction ne doit pas correspondre à un nom utilisé par Basic, et il doit être différent des noms des modules de la bibliothèque où elle se trouve.
Alors comment faire ? Choisissez un nom spécifique, pas trop court, ou comportant un caractère souligné _ ou des chiffres, ou tout ça à la fois. Z_2BK est bien, mais pas très parlant.