Macro complementaire
Bonsoir le forum
je suis coincé sur un sujet que j'avais commencé la semaine passée
il s'agit de du lancement d'une macro complémentaire après l'avoir "bien" installée.
Je ne sais pas comment la lancer à partir d'un autre fichier.
Merci de votre aide
Bonne nuit
Bon Week end à tous
Bonjour,
Le classeur (de macros complémentaires) est-il visible dans l'onglet Développeur > Compléments ? (Ou dans Fichier > Options > Compléments)
Si "NON" il n'a pas été enregistré correctement.
est-il coché dans l'onglet dans l'onglet Développeur > Compléments ?
Si "NON" il faut le cocher
Si "OUI" les macros sont maintenant utilisable normalement (et visible de puis l'explorateur de projet VBA) : il suffit de les invoquer par leur nom.
Nota :
- Les Fonctions personnalisées contenues dans le classeur de macros complémentaire sont visibles dans la liste des fonctions Excel au même titre que les autres (catégorie "Personnalisées"
- Les macros contenues dans le classeur de macros complémentaire ne sont pas visibles dans la boite de dialogue Developpeur > Macros mais vous pouvez les invoquer normalement par leur nom.
- Vous pouvez les utiliser dans les mêmes conditions pour la personnalisation de la barre d'outils Accès rapide (elles sont alors visible dans la boite de dialogue d'installation)
- Vous pouvez également les appeler à l'intérieur des macros des autres classeurs avec la syntaxe suivante :
Run "Perso.xlam!CentrerTitreGras"
A+
Bonjour Galopin01
Merci de ton intervention . je vais vérifier et essayer tout cela cet après midi
et je vous ferai signe.
A+
Bonjour Galopin01
Tes explications ont été très claires et m'ont permis de bien installer ma macro.
Le seul hic à mon niveau est que j' ai été incapable d'appeler la macro
je vous remercie de me donner un autre coup de pouce si possible.
Bon Dimanche
Bonjour,
Merci de répondre aux questions suivantes :
1 - Comment s'appelle ton classeur de macro complémentaire. (Nom+extension)
Exemple "perso.xlam"
2 - Est-ce que tu le vois dans la boite de dialogue Développeur > Compléments ?
(Nota : dans cette boite de dialogue on ne vots que le nom du classeur sans extension : "Perso")
3 - Est-il coché dans l'onglet dans l'onglet Développeur > Compléments ?
4 - Quelle macro de ton classeur de macro complémentaire veux-tu appeler ?
5 - Dans quel module de ton classeur de macro complémentaire se trouve cette macro ? (Exemple "Module1")
-> Fournir le texte intégral de la macro.
6 - Comment comptes-tu appeler cette macro ?
a) Par la boite de dialogue Developpeur > Macros
b) Par un bouton de la barre d'outils Accès rapide
c) Par une autre macro d'un autre classeur ?
A+
Avec plaisir Galopin01
Mon classeur s'appelle bakh-id_13.xlam
1/Je vois le classeur via Option ----Excel------Atteindre--------bakh-id que j'ai effectivement coché
Nota en faisant developpeur---------complément. je ne vois rien
Par contre en passant par excel Option comblement Macro actifs -----------l'Userform s'ouvre aussitot dès que je coche bakh--
2/Je voudrai appeler la macro affichage de l'userform1
3/Cette macro se trouve dans le module 1
4/code Userform1.show
5/Je voudrais appeler la macro
"ouvrir mon userform" à partir d'un autre classeur
je ne sais pas si j'ai été complet ou clair
En tout cas merci de t’intéresser à mon problème.
A+
Bonsoir,
ça m'inquiète un peu que tu n'ai pas le classeur visible dans Developpeur > Compléments mais comme je n'ai plus 2007, je ne peux pas être catégorique... mais ceci :
"Par contre en passant par excel Option comblement Macro actifs -----------l'Userform s'ouvre aussitot dès que je coche bakh--"
... est un peu anormal ! (A moins que tu l'ai baptisée Auto_Open, Auto_Exec ou quelque chose du même acabit. Dans ce cas c'est anormal : Donne à cette macro un nom quelconque)
Ton bakh-id_13 est supposé avoir été coché définitivement :
Quand tu ouvres ton Excel (un nouveau classeur), si tu vas directement dans VBA est-ce que tu vois ton bakh-id_13.xlam dans l'explorateur de projet VBA ? (1 réponse attendue)
Si ton classeur est visible dans dans le VBAProject comme le mien dans l'image ci-dessus, les macros qui y sont contenues (y compris le USF) sont accessibles.
J'ai demandé le code de la macro souhaitée or le code commence par Sub NomDeLaMacro et se termine par End Sub... A l'avenir si je te demande le code d'une macro merci de me donner le code intégral !
On supposera que ta macro qui ouvre ton USF s'appelle "Sub NomDeLaMacro()"
Si ton classeur est visible dans dans le VBAProject alors NomDeLaMacro peut être appelé comme n'importe qu'elle autre macro depuis un bouton ou depuis la boite de dialogue Developpeur > Macro
Elle n'est pas visible dans les boites de dialogue mais si tu tapes "NomDeLaMacro" la macro s'exécute.
Si tu comptes exécuter cette macro depuis du code VBA contenu dans le classeur hôte, tu dois l'appeler avec la syntaxe suivante :
Sub Test()
Run "bakh-id_13.xlam!NomDeLaMacro"
End Sub
Question Subsidiaire :
Les classeurs de macros complémentaires comportants des USF peuvent être considérés comme une espèce encore particulière :
Ce classeur de macro complémentaire est-il censé être à disposition d'un seul classeur (hôte dédié) ou de tous tes classeurs ?
A+
Slt
Effectivement comme chez toi je vois bien bakh-id_13.xlam
Je note en passant le langage pour parler la m^me chose.
Le code de la macro est
Private Sub Workbook_Open()
UserForm1.Show 0
End Sub
Ce classeur devrait être à la disposition d 'un seul classeur.
Peut être que je pourrai maintenant utiliser le code que tu as bien voulu me donner ci dessous
pour y arriver.
A+
Bonsoir,
Private Sub Workbook_Open() : Cette macro n'a pas vocation à être dans Module1 mais dans le module ThisWorkbook
Il faut donc la supprimer (ou la renommer : Tout dépend à quoi sert ton UserForm)
Si c'est un Userform qui est destiner à demander un mot de passe d'accès par exemple, il faut la mettre dans le module ThisWorkbook de bakh-id_13.xlam
Sinon si ce Userform a un tout autre objet et est destiné à être appelé ponctuellement dans ce cas il suffit de renommer la macro d'appel n'importe comment ( par exemple "galopin, bakh, ou papillon") et de l'appeler au moment opprtun par un des moyens que je t'ai indiqué.
Comme cette macro complémentaire devrait être à la disposition d'un seul classeur "hôte dédié". Dans le ThisWorkbook du classeur dédié tu devras mettre les 2 macros suivantes :
Private Sub Workbook_Open()
AddIns("bakh-id_13.xlam").Installed = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AddIns("bakh-id_13.xlam").Installed = false
End Sub
...de manière que les autres classeurs ne soient pas importunés par ta macro complémentaire. (En particulier si c'est un USF mot de passe ! )
Ok ?
Bonsoir Galopin01
Tu pourrais dire que tu ne peux pas être plus clair que ça.
Normal.
De mon côté je me suis peut être emmêlé les pinceaux.
Je rencontre à l'ouverture de mon classeur dédié : l'indice n'appartient pas à la syntaxe
Par contre j'ai placé la macro sur la barre "accès rapide" et elle marche bien
je me propose de reprendre tout depuis le début ( avec un classeur plus simple de nom) et je reviens vers toi demain
En te souhaitant une bonne nuit et une bonne semaine
Merci de ta patience
A+
Ok.
"l'indice n'appartient pas à la syntaxe" n'est pas un message d'erreur valide : La programmation est un art ou les mots -et même les virgules- ont un sens il faut donc être plus précis dans tes explications : La sémantique et la syntaxe sont le b+a = ba du programmeur...
Comme tu appelles la macro depuis un bouton tu as donc du renommer ta macro (et non pas la transférer dans ThisWorkbook)
Je te signale que tu dois supprimer le mot Private devant cette dernière. Comme cette Sub se trouve dans ton .xlam elle est de toute façon invisible et inconnue de l'utilisateur final...
Les Private Sub... sont des macros prédéfinies (évènementielles) qui ne doivent pas être utilisées à la légère.
Les Private Sub... se trouvent -en principe- exclusivement dans les modules ThisWorkbook, dans les Modules de Feuilles et dans les Modules de UserForm pas dans les modules standart (sauf exceptions...)
Me préciser les points suivants afin qu'on parle bien le même langage.
- Le nouveau nom du classeur (.xlam)
- Le nouveau nom de la macro qui ouvre le UserForm (USF)
- Rassure moi également : le USF en question il se trouve bien également dans ton .xlam ?
- Comme ce nouveau.xlam devrait être à la disposition d'un seul classeur "hôte dédié", as-tu bien installé (dans le ThisWorkbook du classeur dédié) les 2 macros que je t'ai recommandées ? Si c'est bien le cas il faudra également penser à changer le nom du Addins :
Private Sub Workbook_Open()
AddIns("nouveau.xlam").Installed = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AddIns("nouveau.xlam").Installed = false
End Sub
=>4 réponses attendues
Si tu as toujours un message d'erreur il sera temps de me montrer ton bricolage et de m'envoyer ta .xlam ainsi que le classeur dédié qui va avec (débarrassé des informations inutiles) en pièce jointe. Je t'ai envoyé un e-mail à cet usage.
A+