Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gestion des modules

  • Initiateur de la discussion Initiateur de la discussion Madjer
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Madjer

XLDnaute Nouveau
Bonjour,

J'ai un petit problème, légèrement différents des autres cette fois-ci.
Je remercie d'avance celles/ceux qui liront la suite !😉

C'est très simple :

Dans un module1, j'ai une procédure (Sub) dans laquelle je sollicite une fonction (Function) personelle que j'ai écrite dans un module2.
Mes modules sont stockés dans 'PERSONNAL', le classeur de macros personnel, qui s'ouvre automatiquement à chaque lancement d'Excel.

Le problème est donc le suivant :

Dès que j'ouvre un nouveau excel (Nouveau_Classeur.xlsx), je ne peux utiliser ma procédure, car celle-ci appelle une fonction personnelle qui n'est pas stockée dans un module de ce classeur (je parle toujours de Nouveau_Classeur.xlsx). Je suis obligé de charger le module2 (celui qui contient ma fonction) dans le nouveau classeur pour ne pas avoir de problèmes..

L'idée étant de pouvoir appeller (via un "Call") la fonction du module2 dans le module 1.

Est-ce possible ?

J'espère avoir été clair !

Merci bien
 
Re : Gestion des modules

Bonjour Robert,

Je viens d'essayer, cela ne fonctionne pas malheureusement.

Je pensais également à quelque chose de ce type là, même pourquoi pas :

Code:
Application.Run "PERSONAL.XLSB!Module1.FonctionPersonnelle"

Mais ça ne donne rien.
J'aurais au moins réussi à bien poser le problème, c'est déjà un premier pas.

Je reste ouvert à toutes propositions 😀
 
Re : Gestion des modules

Bonjour Madjer, bonjour le forum,

Dans mon classeur de macro personnelles (dans le Module1) ce code :

Code:
Public Sub test()
MsgBox "Test"
End Sub
Dans le module1 d'un classeur vierge (pas encore enregistré) celui-ci :
Code:
Sub Macro2()
Application.Run "PERSONAL.XLSB!test"
End Sub
Je lance la macro 2 du classeur vierge et j'ai bien le message Test.
Je n'ai pas eu besoin de spécifier le module (Module1), seule la ligne :
Code:
Application.Run "PERSONAL.XLSB!test"
a été suffisante pour afficher le message...
Essaie avec :

Code:
Application.Run "PERSONAL.XLSB!FonctionPersonnelle"
 
Re : Gestion des modules

Oui, tu as bien compris ce que j'essaie de faire, malheureusement, ça ne fonctionne pas.

En gros j'essaye de charger une fonction personnelle, stockée dans un module personnel, issue d'un classeur de macro personnel (PERSONNAL.XLSB), le tout sur un autre module (toujours du même classeur de macros). Ce dernier module abrite une procédure qui utilise cette fonction personnelle. J'aimerais donc la charger dans la procédure.
 
Dernière édition:
Re : Gestion des modules

Bonjour
Si c'est bien une fonction (et pas une sub) que tu as dans ton personal.xlsb, il faut l'appeler de la façon suivante
=PERSONAL.xlsb!mafonction()
Sinon c'est comme indiqué par Robert
 
Re : Gestion des modules

Misange,
Je ne suis pas sûr d'avoir compris, doit-il y avoir quelque chose avant le signe '=' ?

Je te remercie.

EDIT : Oui, je confirme c'est bien une 'function' pas une 'sub'
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
382
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…