Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Code VBA et fichier modèle (Par hasard :)

5 réponses
Avatar
Gregory Hilaire
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que modèle
et je retrouve le code dans les fichiers générés à partir de ce modèle. Ce
qui est magnifique car c'est ce que je veux... Par contre je fais là même
chose avec un document Word et là le fichier produit ne contient aucun code!
Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA mais
je me suis dit on ne sait jamais. Alors par hasard il y aurait il quelqu'un
à avoir une idée à savoir si c'est normal ou ai-je fait un "boubou" quelque
part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de souluce
...

Hyper bonne journée à tous!

Greg

5 réponses

Avatar
Frédéric Sigonneau
Word ne procède en effet pas de la même manière qu'Excel.
Lorsque tu crées un fichier Word à partir d'un modèle, ce nouveau fichier créé
avec une référence à ce modèle, référence qui lui permet d'accéder au code.
C'est une solution qui se défend.
La mise à jour du modèle (évolution du code par exemple) est valable
automatiquement dans tous les fichiers basés sur ce modèle.
Alors qu'avec Excel il faut penser à enregistrer le code dans une xla, par
exemple, puis à établir une référence dans un modèle (xlt) vers cette xla pour
obtenir le même résultat.
Avec Word, c'est l'inverse. Lorsque l'on veut enregistrer un document en le
"désolidarisant" de son modèle, il faut le faire explicitement avec un ligne de
code comme

ActiveDocument.AttachedTemplate = Application.NormalTemplate.FullName

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que modèle
et je retrouve le code dans les fichiers générés à partir de ce modèle. Ce
qui est magnifique car c'est ce que je veux... Par contre je fais là même
chose avec un document Word et là le fichier produit ne contient aucun code!
Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA mais
je me suis dit on ne sait jamais. Alors par hasard il y aurait il quelqu'un
à avoir une idée à savoir si c'est normal ou ai-je fait un "boubou" quelque
part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de souluce
....

Hyper bonne journée à tous!

Greg







Avatar
Gregory Hilaire
Un grand Merci à FS, Cela confirme ce que je croyais ... Je me demande
comment faire pour que le nouveau document tout en faisant référence à
fichier dot continue à réagir comme lorsque j'utilisais un fichier doc avec
des codes inclus!

J'ai mis ces routines dans Object ThisDocument et il fonctionnait très bien.

Private Sub Document_Close()
RemoveMenubar
End Sub

Private Sub Document_Open()
Frm_Setup.Show
CreateMenubar
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Password:=MotDePasse, NoReset:=True,
Type:=wdAllowOnlyFormFields
End If
Nettoyage
End Sub


Cependant là ils me donnent des erreurs, probablement il existent d'autre
méthodes ? Je suis un peu perdu :)
Et je suis sûr que c'est possible et que j'y suis presque.

Encore une Fois merci à ceux qui m'ont lu et tout spécialement à FS. Si
d'autres idées te viennent cela me dépannerait
de les avoir ;)

Un gros Merci
Greg

"Frédéric Sigonneau" a écrit dans le message de news:

Word ne procède en effet pas de la même manière qu'Excel.
Lorsque tu crées un fichier Word à partir d'un modèle, ce nouveau fichier
créé avec une référence à ce modèle, référence qui lui permet d'accéder au
code.
C'est une solution qui se défend.
La mise à jour du modèle (évolution du code par exemple) est valable
automatiquement dans tous les fichiers basés sur ce modèle.
Alors qu'avec Excel il faut penser à enregistrer le code dans une xla, par
exemple, puis à établir une référence dans un modèle (xlt) vers cette xla
pour obtenir le même résultat.
Avec Word, c'est l'inverse. Lorsque l'on veut enregistrer un document en
le "désolidarisant" de son modèle, il faut le faire explicitement avec un
ligne de code comme

ActiveDocument.AttachedTemplate = Application.NormalTemplate.FullName

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que
modèle et je retrouve le code dans les fichiers générés à partir de ce
modèle. Ce qui est magnifique car c'est ce que je veux... Par contre je
fais là même chose avec un document Word et là le fichier produit ne
contient aucun code! Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA
mais je me suis dit on ne sait jamais. Alors par hasard il y aurait il
quelqu'un à avoir une idée à savoir si c'est normal ou ai-je fait un
"boubou" quelque part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de souluce
....

Hyper bonne journée à tous!

Greg








Avatar
Frédéric Sigonneau
Avec Word, lorsque tu veux qu'un code s'exécute lors de la création d'un
document basé sur un modèle, tu dois utiliser (dans le module ThisDocument du
modèle) un événement Document_New (ou une macro AutoNew dans un module standard)
et non un événement Document_Open (lequel, comme AutoOpen, ne s'exécute qu'à
l'ouverture d'un document enregistré).
Ensuite, l'erreur est sans doute à chercher dans les procédures que tu essayes
de lancer à l'ouverture et à la fermeture (Frm_Setup.Show, CreateMenubar,
Nettoyage, RemoveMenubar).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Un grand Merci à FS, Cela confirme ce que je croyais ... Je me demande
comment faire pour que le nouveau document tout en faisant référence à
fichier dot continue à réagir comme lorsque j'utilisais un fichier doc avec
des codes inclus!

J'ai mis ces routines dans Object ThisDocument et il fonctionnait très bien.

Private Sub Document_Close()
RemoveMenubar
End Sub

Private Sub Document_Open()
Frm_Setup.Show
CreateMenubar
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Password:=MotDePasse, NoReset:=True,
Type:=wdAllowOnlyFormFields
End If
Nettoyage
End Sub


Cependant là ils me donnent des erreurs, probablement il existent d'autre
méthodes ? Je suis un peu perdu :)
Et je suis sûr que c'est possible et que j'y suis presque.

Encore une Fois merci à ceux qui m'ont lu et tout spécialement à FS. Si
d'autres idées te viennent cela me dépannerait
de les avoir ;)

Un gros Merci
Greg

"Frédéric Sigonneau" a écrit dans le message de news:

Word ne procède en effet pas de la même manière qu'Excel.
Lorsque tu crées un fichier Word à partir d'un modèle, ce nouveau fichier
créé avec une référence à ce modèle, référence qui lui permet d'accéder au
code.
C'est une solution qui se défend.
La mise à jour du modèle (évolution du code par exemple) est valable
automatiquement dans tous les fichiers basés sur ce modèle.
Alors qu'avec Excel il faut penser à enregistrer le code dans une xla, par
exemple, puis à établir une référence dans un modèle (xlt) vers cette xla
pour obtenir le même résultat.
Avec Word, c'est l'inverse. Lorsque l'on veut enregistrer un document en
le "désolidarisant" de son modèle, il faut le faire explicitement avec un
ligne de code comme

ActiveDocument.AttachedTemplate = Application.NormalTemplate.FullName

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que
modèle et je retrouve le code dans les fichiers générés à partir de ce
modèle. Ce qui est magnifique car c'est ce que je veux... Par contre je
fais là même chose avec un document Word et là le fichier produit ne
contient aucun code! Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA
mais je me suis dit on ne sait jamais. Alors par hasard il y aurait il
quelqu'un à avoir une idée à savoir si c'est normal ou ai-je fait un
"boubou" quelque part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de souluce
....

Hyper bonne journée à tous!

Greg











Avatar
Gregory Hilaire
Un GROS GROS GROS merci F.S de ta patience et de tes réponses très précises
et très à propos
surtout quand je sais que ici ce n'est pas un newsgroup dédié à Word. Avec
ce que tu m'as fourni
Je vais travailler fort pour mettre à jour le code ...

Passe une excellente journée

Greg

"Frédéric Sigonneau" a écrit dans le message de news:
OtkJ57$
Avec Word, lorsque tu veux qu'un code s'exécute lors de la création d'un
document basé sur un modèle, tu dois utiliser (dans le module ThisDocument
du modèle) un événement Document_New (ou une macro AutoNew dans un module
standard) et non un événement Document_Open (lequel, comme AutoOpen, ne
s'exécute qu'à l'ouverture d'un document enregistré).
Ensuite, l'erreur est sans doute à chercher dans les procédures que tu
essayes de lancer à l'ouverture et à la fermeture (Frm_Setup.Show,
CreateMenubar, Nettoyage, RemoveMenubar).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Un grand Merci à FS, Cela confirme ce que je croyais ... Je me demande
comment faire pour que le nouveau document tout en faisant référence à
fichier dot continue à réagir comme lorsque j'utilisais un fichier doc
avec des codes inclus!

J'ai mis ces routines dans Object ThisDocument et il fonctionnait très
bien.

Private Sub Document_Close()
RemoveMenubar
End Sub

Private Sub Document_Open()
Frm_Setup.Show
CreateMenubar
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Password:=MotDePasse, NoReset:=True,
Type:=wdAllowOnlyFormFields
End If
Nettoyage
End Sub


Cependant là ils me donnent des erreurs, probablement il existent d'autre
méthodes ? Je suis un peu perdu :)
Et je suis sûr que c'est possible et que j'y suis presque.

Encore une Fois merci à ceux qui m'ont lu et tout spécialement à FS. Si
d'autres idées te viennent cela me dépannerait
de les avoir ;)

Un gros Merci
Greg

"Frédéric Sigonneau" a écrit dans le message de news:

Word ne procède en effet pas de la même manière qu'Excel.
Lorsque tu crées un fichier Word à partir d'un modèle, ce nouveau
fichier créé avec une référence à ce modèle, référence qui lui permet
d'accéder au code.
C'est une solution qui se défend.
La mise à jour du modèle (évolution du code par exemple) est valable
automatiquement dans tous les fichiers basés sur ce modèle.
Alors qu'avec Excel il faut penser à enregistrer le code dans une xla,
par exemple, puis à établir une référence dans un modèle (xlt) vers
cette xla pour obtenir le même résultat.
Avec Word, c'est l'inverse. Lorsque l'on veut enregistrer un document en
le "désolidarisant" de son modèle, il faut le faire explicitement avec
un ligne de code comme

ActiveDocument.AttachedTemplate = Application.NormalTemplate.FullName

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que
modèle et je retrouve le code dans les fichiers générés à partir de ce
modèle. Ce qui est magnifique car c'est ce que je veux... Par contre je
fais là même chose avec un document Word et là le fichier produit ne
contient aucun code! Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA
mais je me suis dit on ne sait jamais. Alors par hasard il y aurait il
quelqu'un à avoir une idée à savoir si c'est normal ou ai-je fait un
"boubou" quelque part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de
souluce
....

Hyper bonne journée à tous!

Greg













Avatar
Frédéric Sigonneau
> surtout quand je sais que ici ce n'est pas un newsgroup dédié à Word



Sans doute, mais 'ici', on n'est pas sectaire :)
On répond, à l'occasion, pour Word, Powerpoint, Winzip, Firefox, que sais-je
encore.. et en français, en anglais, en ch'ti, en italien, en espagnol, et j'en
passe..
et toujours, dans la joie et la bonne humeur !
:-))

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Un GROS GROS GROS merci F.S de ta patience et de tes réponses très précises
et très à propos
surtout quand je sais que ici ce n'est pas un newsgroup dédié à Word. Avec
ce que tu m'as fourni
Je vais travailler fort pour mettre à jour le code ...

Passe une excellente journée

Greg

"Frédéric Sigonneau" a écrit dans le message de news:
OtkJ57$
Avec Word, lorsque tu veux qu'un code s'exécute lors de la création d'un
document basé sur un modèle, tu dois utiliser (dans le module ThisDocument
du modèle) un événement Document_New (ou une macro AutoNew dans un module
standard) et non un événement Document_Open (lequel, comme AutoOpen, ne
s'exécute qu'à l'ouverture d'un document enregistré).
Ensuite, l'erreur est sans doute à chercher dans les procédures que tu
essayes de lancer à l'ouverture et à la fermeture (Frm_Setup.Show,
CreateMenubar, Nettoyage, RemoveMenubar).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Un grand Merci à FS, Cela confirme ce que je croyais ... Je me demande
comment faire pour que le nouveau document tout en faisant référence à
fichier dot continue à réagir comme lorsque j'utilisais un fichier doc
avec des codes inclus!

J'ai mis ces routines dans Object ThisDocument et il fonctionnait très
bien.

Private Sub Document_Close()
RemoveMenubar
End Sub

Private Sub Document_Open()
Frm_Setup.Show
CreateMenubar
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Password:=MotDePasse, NoReset:=True,
Type:=wdAllowOnlyFormFields
End If
Nettoyage
End Sub


Cependant là ils me donnent des erreurs, probablement il existent d'autre
méthodes ? Je suis un peu perdu :)
Et je suis sûr que c'est possible et que j'y suis presque.

Encore une Fois merci à ceux qui m'ont lu et tout spécialement à FS. Si
d'autres idées te viennent cela me dépannerait
de les avoir ;)

Un gros Merci
Greg

"Frédéric Sigonneau" a écrit dans le message de news:

Word ne procède en effet pas de la même manière qu'Excel.
Lorsque tu crées un fichier Word à partir d'un modèle, ce nouveau
fichier créé avec une référence à ce modèle, référence qui lui permet
d'accéder au code.
C'est une solution qui se défend.
La mise à jour du modèle (évolution du code par exemple) est valable
automatiquement dans tous les fichiers basés sur ce modèle.
Alors qu'avec Excel il faut penser à enregistrer le code dans une xla,
par exemple, puis à établir une référence dans un modèle (xlt) vers
cette xla pour obtenir le même résultat.
Avec Word, c'est l'inverse. Lorsque l'on veut enregistrer un document en
le "désolidarisant" de son modèle, il faut le faire explicitement avec
un ligne de code comme

ActiveDocument.AttachedTemplate = Application.NormalTemplate.FullName

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Gregory Hilaire a écrit :
Bien le bonjour le groupe!

Je crée un fichier Excel avec du code VBA je l'enregistre en tant que
modèle et je retrouve le code dans les fichiers générés à partir de ce
modèle. Ce qui est magnifique car c'est ce que je veux... Par contre je
fais là même chose avec un document Word et là le fichier produit ne
contient aucun code! Oups cela j'aime moins ...

Je sais que ce n'est pas ici à priori les spécialistes de de Word VBA
mais je me suis dit on ne sait jamais. Alors par hasard il y aurait il
quelqu'un à avoir une idée à savoir si c'est normal ou ai-je fait un
"boubou" quelque part?

Si oui quelle serait la solution pour avoir le code du modèle dans le
nouveau document créé? Un grand merci pour tout aide ou début de
souluce
....

Hyper bonne journée à tous!

Greg