XL 2019 Utiliser un paramètre 'Enum' d'une Fonction UDF depuis une cellule?

p'tit vieux

XLDnaute Occasionnel
Bonjour à tous,
J'ai cherché et pas trouvé.
J'ai fait une fonction personnalisée avec une variable de type Enum. (YOUPI !)
Pour des raisons d'ergonomie et éviter des erreurs évidentes je voudrais qu'à la saisie dans une cellule ce paramètre propose la liste des valeurs Enum.
Si j'écris je fais un appel de cette fonction à une partir d'une autre fonction pas de problème. Ca marche.
J'ai tenté en faisant une déclaration "Public" dans le module puis en créant une classe. Mais rien à faire.
Est ce possible ou m'y suis je mal pris?

Merci à vous
 

Dranreb

XLDnaute Barbatruc
Excel ne connaissant pas les Enum de VBA, ça ne va pas être commode. il faudrait déjà ne pas préciser le paramêtre en question et que la fonction ajoute à une collection une consigne d'exécution d'une procédure qui modifiera la cellule suite à un dialogue. Cela pourrait être combiné à l'utilisation de noms dans le classeur pour ces valeurs d'Enum.
 

p'tit vieux

XLDnaute Occasionnel
Oui c'est cela.
Dans la cellule on écrit:
= MaFonct(para1 ... Et la apparaît la liste Enum.
Désolé mais sur mon smartphone je ne peux pas faire de copie écran comme exemple.
Et si je transpose ma fonction, avec Dot Net, en VSOP (XLL ou DLL?) ça deviendrait possible ?
 

patricktoulon

XLDnaute Barbatruc
je pense que l'on peut faire ça par vba mais le problème avec ton idée c'est le calculate qui va enclencher la fonction a chaque fois qu'il va y avoir un calculate dans la feuille a moins que la fonction vba renvoyant la sélection de la liste en tant que valeur et supprime la fonction

cela dit c'est tordu quand même
coder une fonction dans une formule qui devient une macro commande ;) 🤔

l' event "change" de la feuille le fait très bien déjà ça
 

p'tit vieux

XLDnaute Occasionnel
Merci Patrick (de Toulon;)),
Pour être sûr de m'être bien expliqué voici les capture d'écran
Ici dans un module, c'est bon:
1623248759300.png


Je voudrais avoir la même chose lors de la saisie de la fonction dans une cellule comme ci-dessous.
1623247737487.png

Mais là plus de liste.
par vba mais le problème avec ton idée c'est le calculate qui va enclencher la fonction a chaque fois qu'il va y avoir un calculate dans la feuille a moins que la fonction vba renvoyant la sélection de la liste en tant que valeur et supprime la fonction
Si je comprends ce que tu dis c'est qu'à chaque fois que la feuille sera recalculée pour une raison ou une autre il y aura relecture de toutes les valeurs de l'Enum. Soit. Mais n'est pas ce qui ce passe toujours même dans Visual Studio. Il y a (re)lecture des "dictionnaires" des variables, Enum, Constantes, Collections etc .
Quelque chose m'échappe sur le mécanisme de VBA que tu me décris.

En résumé cela n'a pas l'air d'être possible sous VBA.
Sais tu si cela cet aspect ergonomique/sécurité serait possible si j'écris la fonction sous Visual Studio (VSOP/XLL) ?
Je n'ai pas encore mis les mains dans ce type de solution et donc ne sais pas les avantages/inconvénients d'en passer par là.
Encore merci Patrick
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
oui je vois mieux ce que tu veux mais ça va a l'encontre du principe des events d'une feuille
l'event change est déclenché post validation ;c'est a dire avec la touche enter ou la sélection d'une autre cellule :donc tant que tu es dedans il ne peut rien se passer
et je pense pas que cela soit possible
 

p'tit vieux

XLDnaute Occasionnel
Ok merci pour l'explication.
Tant pis. Décidément j'ai toujours des idées bizarres. En vouloir toujours non mais vraiment 😆🤣
Je vais regarder si avec Visual Studio (VB.NET) c'est possible.
Si je trouve une solution je viendrais te la rapporter.
Encore merci et à ... te revoir lors de ma "bonne" prochaine idée 😇
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla