OVH Cloud OVH Cloud

Comment intégrer modules VBA dans documents basé sur modèles ?

1 réponse
Avatar
troismille
Bonjour,

Quelqu'un a-t-il une astuce pour simplement, quand j'enregistre un
document basé sur un modèle, enregistrer les macros dans les .DOC
générés depuis le modèle ?

Je m'explique avec une petite histoire :

J'ai un modèle (Toto.dot) dans lequel j'ai une procédure VBA :

Sub Bidule()
MsgBox "Ce message est très important"
End Sub

Je fais Fichier/Nouveau, et je demande un nouveau document basé sur
Toto.Dot

J'écris un petit texte dedans, histoire de le modifier :
"Bonjour Frérot, je te conseille d'exécuter Bidule"

J'enregistre mon document sous "BeauTexte.doC"

J'envoie ce document par E-Mail à mon frère

Et quand il essaie d'aller dans le menu Outils/Macros/Macros : Pas de
Bidule !

Et pour cause : En fait, quand je reste en local et que j'ouvre
BeauTexte, Word m'ouvre également (en arrière-plan) Toto.DOT, qui est
le modèle qui a servi de base dans le

but notamment de récupérer les macros.

J'ai bien pensé lui envoyer également le modèle, mais mon frère me dit
qu'il a déjà un modèle qui s'appelle Toto.dot.

Je peux évidemment créer Toto.DOC, et à chaque fois que je veux créer
un nouveau document basé sur ce pseudo-modèle, je fais
Fichier/Enregistrer sous... Mais ça me parait

être quelque peu rustre comme solution...

Merci d'avance

Michel

1 réponse

Avatar
Anacoluthe
Bonjour !

'Info 3000' nous a écrit ...
Quelqu'un a-t-il une astuce pour simplement, quand j'enregistre un
document basé sur un modèle, enregistrer les macros dans les .DOC
générés depuis le modèle ?
Je m'explique avec une petite histoire :
J'ai un modèle (Toto.dot) dans lequel j'ai une procédure VBA :
Sub Bidule()
Je fais Fichier/Nouveau, et je demande un nouveau document basé sur
Toto.Dot
J'envoie ce document par E-Mail : Pas de Bidule !


Héritage des macros d'un modèle dans ses documents :
- Placez la procédure Bidule dans un *Module* de Toto.dot
- Placez dans un autre module de Toto.dot une macro automatique
qui va copier ce module nommé par exemple MonModule dans
chaque nouveau document :

Public Sub AutoNew()
' Copie le module MonModule dans chaque nouveau document
Application.OrganizerCopy _
Source:¬tiveDocument.AttachedTemplate.FullName, _
Destination:¬tiveDocument.FullName, _
Name:="MonModule", _
Object:=wdOrganizerObjectProjectItems
End Sub

Ça vous convient comme solution ?

Anacoluthe
« Il est plus facile de copier que de penser. »
- Wallace STEVENS