[Déplacé VB6 --> VBA] AJOUT DE FONCTION DANS VBA HORS MODULE

Résolu
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011 - 27 juil. 2009 à 17:28
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011 - 29 juil. 2009 à 09:09
Hello,
Je me suis fait une petite liste de fonction dans un XLA, ces dernières me servent énormément dans Excel.
Certaines d'entre elles me seraient d'un grand secours si je pouvais les inclure aux fonctions VBA existantes.
Je souhaiterais donc savoir si cela est possible, et cela sans devoir copier les codes des fonctions dans le module (ou projet ) concerné.

Merci de votre aide.

BR
USERRRQI115
Simple user
Great brain

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 juil. 2009 à 00:38
Excuses, l'extension par défaut d'un fichier Module est .bas, et pas .mod

Si tu veux accéder aux fonctions d'une macro complémentaire (XLA), je pense qu'il faut la charger dans chacun des projets que tu ouvres.
Ta question deviendrais "comment charger automatiquement une macro complémentaire" ?
Voir l'aide "Créer une macro, chapitre "pour créer une macro au démarrage" --> Auto_Activate

L'aide de Excel dit (pour copier un module dans un autre classeur) :
[*] Définissez le niveau de sécurité sur Moyen.
[*] Ouvrez le classeur qui contient le module (module : collection de déclarations, d'instructions et de procédures stockées ensemble ou en tant qu'unité nommée. Il existe deux types de modules : les modules standard et les modules de classe.) que vous voulez copiez ainsi que le classeur dans lequel vous voulez copier le module.
[*] Dans le menu Outils, pointez sur Macro, puis cliquez sur Visual Basic Editor.
[*] Dans le menu Affichage, cliquez sur Explorateur de projet .
[*] Faites glisser le module que vous souhaitez copier vers le classeur de destination

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juil. 2009 à 13:25
Salut
Il te suffit de mettre tes fonctions dans un module.
Bien sûr, il faudra que les déclarations de tes Sub ou Function soient en Public pour être accessible depuis les autres objets de ton projet.
Quand ton module est complet et fonctionnel, tu cliques-droit sur le nom de ton module dans l'arborescence des objets + "Exporter un fichier"
Tu mets ce fichier dans un coin et, quand tu en as à nouveau besoin dans un autre projet, tu refais la même manip du clic-droit avec "Importer un fichier"

Le fichier .mod que tu auras sauvegardé n'est qu'une sauvegarde 'matérielle'.
Les Modules ou UserForms des classeurs Excel sont inclus dans le fichier .XLS.
Donc, si tu modifies le fichier .mod, il faudra le réimporter dans chaque classeur.

Voir aussi si tu peux faire la même manip dans un fichier .XLA = Complément.
Cela te permettrait de n'avoir qu'un objet module, et de pouvoir en profiter dans tous tes projets, sans déclaration autres que le XLA.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
28 juil. 2009 à 14:26
Bonnjour
D'abord merci pour ta réponse.
J'ai bien compris les 2 premiers paragraphes et le 3eme est un peu plus flou.

Ma configuration actuelle est la suivante :
j'ai un XLA permanent (placé dans XLstart) qui contient plusieurs function déclarées en public (public function...).
Une fois sur un classeur Excel ces fonctions sont accessibles, mais ils ne le sont pas dans les modules des autres projets.

Pour que ça fonctionne il faut que je duplique mon module de function dans un module du projet concerné? C'est bien ça ?
Peut-on résumer la situation comme cela : Les fonctions "personnalisées" pour être accessibles doivent être hébergées dans le projet concerné.
BR

USERRRQI115
Simple user
Great brain
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
29 juil. 2009 à 09:09
Hello,
Merci beaucoup Mr Jack

BR
USERRRQI115
Simple user
Great brain
0
Rejoignez-nous