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)

vbaproj

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+

Rechercher des sujets similaires à "macro complementaire"