Rendre une fonction VBA inaccessible depuis le classeur

Résolu/Fermé
jespscej Messages postés 68 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 3 mai 2020 - Modifié par jespscej le 28/08/2014 à 16:09
jespscej Messages postés 68 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 3 mai 2020 - 28 août 2014 à 16:28
Bonjour,

Je suis actuellement en train de programmer un certain nombre de fonctions en VBA dans un fichier Excel. Je parle de fonctions Function et non de macros Sub.

Toutefois, certaines de ces fonctions servent uniquement à être appelées dans d'autres (je préfère avoir plein de petites fonctions qu'une seule énorme) et n'ont aucun intérêt à être utilisées seules.

Aussi je souhaiterais savoir s'il est possible de les rendre invisibles et inaccessible depuis le classeur Excel. Particulièrement, il serait bon qu'elles n'apparaissent pas dans les fonctions personnalisées.

Merci de votre aide. :-)
A voir également:

4 réponses

bonjour

mettre dans le haut du module:
Option Private Module
ou mettre Private devant le sub

A+
M
0
jespscej Messages postés 68 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 3 mai 2020 17
28 août 2014 à 16:08
Bonjour Maurice et merci de ta réponse.

Cependant ça ne résout pas mon problème !

En effet, mettre Private devant la fonction me la rend inaccessible depuis les autres modules, alors que j'ai justement dans ces autres modules des fonctions qui y font appel. Reste la solution de mettre toutes les fonctions dans le même module mais ça casse un peu mon organisation...

Mais, point positif : la fonction devient bien invisible dans les fonctions personnalisées dans l'assistant de fonctions. Elle reste cependant utilisable si je la rentre manuellement dans une cellule (ce que j'aimerais éviter...).

Je voudrais garder la possibilité d'appeler une fonction depuis un module vers un autre mais qu'elle soit inexistante du point de vue du tableur.

Après, peut-être que j'en demande trop !

Merci encore en tout cas. :-)
0
bonjour

et mettre
Option Private Module
sa evite de mettre Private sur tous les sub
A+
Maurice
0
jespscej Messages postés 68 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 3 mai 2020 17
28 août 2014 à 16:28
J'ai trouvé la réponse donc je la mets si ça peut aider un suivant.

Il faut déclarer Option Private Module en haut de module puis mettre Public devant la fonction à cacher dans le classeur.

Ainsi, la fonction :
- est appelable d'un module à l'autre ;
- n'est pas visible dans l'Assistant Fonction et dans les fonctions personnalisées du classeur ;
- reste utilisable dans le classeur pour peu que l'on connaisse son nom exact et ses arguments exacts et dans le bon ordre.

Je mets le sujet en Résolu.

Merci Maurice de ta deuxième réponse qui me rapprochait de la solution ; la troisième aurait été la bonne, j'en suis sûr ! :-)
0