Copier une Macro du Template Word au document

Résolu/Fermé
Fredy - 20 avril 2009 à 22:12
 Fredy - 24 avril 2009 à 22:29
Bonjour,

Je cherche une facon de copier ma macro, existante dans mon gabarit (.dot), à mon document word qui vient de s'ouvrire (à partir de la macro).

Mais avant, je me demande s'il est possible d'exécuter une macro (du genre : AutoClose) à partir du document Word .doc

J'utilise Word 2007.

Merci,
A voir également:

4 réponses

m@rina Messages postés 17493 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 5 décembre 2022 11 011
22 avril 2009 à 00:27
Bonjour,

Je ne comprends pas ton problème.
Word a toujours agi de cette façon et ce n'est pas spécifique à Word 2007.

- On peut mettre des macros dans un modèle (dot).
- Quand on crée un nouveau document basé sur ce modèle, on a accès aux macros contenues dans le modèle (logique).
- Une fois que le document est séparé de son modèle, on n'a plus accès aux macros.

Remarque : les barres d'outils peuvent être attachées à sa propre appli, et pas à la macro. C'est vrai qu'un onglet complément de Word 2007 est forcément attaché au modèle.

C'est d'ailleurs souvent un problème que peu de personnes savent gérer en entreprise où il y a des modèles avec macros, car si le fichier est attaché à un modèle situé sur son propre disque dur, lorsque le document est transmis à une autre personne, il perd ses macros, et la personne destinataire devra attacher à nouveau le document à son modèle si elle a besoin des macros.
Les styles suivent sans avoir besoin du modèle, mais pas les macros.

Pour Usul d'Arrakis (Hello !;)) : c'est du Word, pas de l'Excel !!! Aussi, pas de WorkBook, pas d'AutoClose.
Par contre, on a un ThisDocument et l'on peut créer une macro
Private Sub Document_Close()
.

Mais... comment la macro va-t-elle arriver toute seule dans le module ThisDocument ? Donc, je pense que ce n'est pas la bonne solution.
Si on veut essayer de copier les macros du template vers le nouveau document, il faut le faire avec un événement AutoNew ou plutôt une macro automatique, c'est à dire que, à chaque nouveau document, la macro se copierait.

Essaie par exemple :

Sub autonew()

Application.OrganizerCopy Source:=ThisDocument, Destination:=ActiveDocument, Name:="Modulex", Object:=wdOrganizerObjectProjectItems
End Sub

Il est un peu tard, j'ai pas testé...

m@rina
1
UsulArrakis Messages postés 7397 Date d'inscription vendredi 28 mars 2003 Statut Contributeur Dernière intervention 27 janvier 2022 3 177
23 avril 2009 à 16:20
Hello m@rina
effectivement c'est du word :-( je suis tellement à triturer excel en cemoment que je mélange
0
UsulArrakis Messages postés 7397 Date d'inscription vendredi 28 mars 2003 Statut Contributeur Dernière intervention 27 janvier 2022 3 177
21 avril 2009 à 12:38
salut
quand ton .dot et ton .doc sont ouverts tu fais Alt+F11
et tu copies le module contenat ta macro du .dot dans le .doc

pour un autoclose il faut mettre la macro dans ThisworkBook
0
Bonjour Ursul,

À vrai dire, je veux faire cela par programmation.

Voici le problème, j'ai des macros qui roulent dans Word 2003 à partir de mon Template (gabarit).
Une fois qu'il est exécuté, un fichier .doc est créé et les macros lui sont attachés. Donc, je peux prendre mon nouveau document et le mettre sur ma clé USB. Quand je viens pour ouvrir le document (de ma clé USB), les macros s'exécutent normalement et la barre à outil que j'avais créé précédement s'affiche.
Par contre, en Word 2007, quand je transporte mon document ailleurs, mes macros (ni ma barre d'outils) ne sont pas transportés avec le document !
Word 2007 fait un lien avec le gabarit pour continuer à exécuter les différentes macros et quand le lien n'existe plus, le macros ne sont plus exécutés.

Alors, je cherche à copier de façon programmatique mes macros du template au document.

Merci de votre aide.
0
Merci à vous,

Ca fonctionne maintenant.
Voici ce que j'ai mis :
Application.OrganizerCopy Source:=Templates(1).FullName _
, Destination:=ActiveDocument.FullName _
, Name:="AutoClose", Object:=wdOrganizerObjectProjectItems

Par contre, si je remplace Templates(1) par ThisDocument
L'anti virus me donne des messages !

Merci.
0