Le modèle ne se décharge pas ! : to bug or not to bug ??
Le
l.gris
Tout d'abord les base du problème (présent sur office 97, XP et 2003, pas
testé sur 2000)
Soit un document "document.doc" ayant pour modèle "modele.dot" (aucun
contenu n'est nécessaire)
Le fonctionnement normal est le suivant :
Si on ouvre "document.doc" Word va charger à la fois le document et le
modèle. On peut le vérifier aisement en ouvrant la fenêtre "Explorateur de
projet" dans VB Editor.
Si on ferme "document.doc" Word décharge à la fois le document et le modèle
(il ne reste plus que "normal.dot" dans VBE).
Maintenant, petite variante, pour mettre en évidence un comportement, qui
pour moi est un bug.
Au lieu d'ouvrir directement le document, on va créer un nouveau document à
partir de "document.doc". Dans la fenetre VBE on peut voir que Word à chargé
une copie (non enregistrée) de "document.doc" ainsi que le modele
"modele.dot".
Jusque là tout va bien.
Maintenant si on referme le nouveau document (sans l'enregister peut
importe) on constate que le modele est toujours présent dans la fenêtre VBE.
Ce n'est pas un pb d'affichage, le modele est bel et bien chargé et
verrouillé au niveau du sytème de fichier. Au niveau VBA, il est toujours
présent dans la collection "application.templates".
Impossible de le décharger autrement qu'en quittant Word.
J'ai essayé en ré-ouvrant et refermant directement le document "document.doc",
en créant un document directement à partir du modèle ou en ouvrant le modèle
lui même.
Si quelqu'un a une idée cela m'aidrait beaucoup car le fameux modèle est
utilisé par de nombreux utilisateurs et je ne peux le mettre à jour tant que
tout le monde n'a pas quitter Word.
testé sur 2000)
Soit un document "document.doc" ayant pour modèle "modele.dot" (aucun
contenu n'est nécessaire)
Le fonctionnement normal est le suivant :
Si on ouvre "document.doc" Word va charger à la fois le document et le
modèle. On peut le vérifier aisement en ouvrant la fenêtre "Explorateur de
projet" dans VB Editor.
Si on ferme "document.doc" Word décharge à la fois le document et le modèle
(il ne reste plus que "normal.dot" dans VBE).
Maintenant, petite variante, pour mettre en évidence un comportement, qui
pour moi est un bug.
Au lieu d'ouvrir directement le document, on va créer un nouveau document à
partir de "document.doc". Dans la fenetre VBE on peut voir que Word à chargé
une copie (non enregistrée) de "document.doc" ainsi que le modele
"modele.dot".
Jusque là tout va bien.
Maintenant si on referme le nouveau document (sans l'enregister peut
importe) on constate que le modele est toujours présent dans la fenêtre VBE.
Ce n'est pas un pb d'affichage, le modele est bel et bien chargé et
verrouillé au niveau du sytème de fichier. Au niveau VBA, il est toujours
présent dans la collection "application.templates".
Impossible de le décharger autrement qu'en quittant Word.
J'ai essayé en ré-ouvrant et refermant directement le document "document.doc",
en créant un document directement à partir du modèle ou en ouvrant le modèle
lui même.
Si quelqu'un a une idée cela m'aidrait beaucoup car le fameux modèle est
utilisé par de nombreux utilisateurs et je ne peux le mettre à jour tant que
tout le monde n'a pas quitter Word.

Poser une question


dit que les modèles doivent être utilisés en local.
"l.gris" news:
dans le message ,
| Tout d'abord les base du problème (présent sur office 97, XP et 2003,
| pas testé sur 2000)
| Soit un document "document.doc" ayant pour modèle "modele.dot" (aucun
| contenu n'est nécessaire)
| Le fonctionnement normal est le suivant :
| Si on ouvre "document.doc" Word va charger à la fois le document et le
| modèle. On peut le vérifier aisement en ouvrant la fenêtre
| "Explorateur de projet" dans VB Editor.
| Si on ferme "document.doc" Word décharge à la fois le document et le
| modèle (il ne reste plus que "normal.dot" dans VBE).
|
| Maintenant, petite variante, pour mettre en évidence un comportement,
| qui pour moi est un bug.
|
| Au lieu d'ouvrir directement le document, on va créer un nouveau
| document à partir de "document.doc". Dans la fenetre VBE on peut voir
| que Word à chargé une copie (non enregistrée) de "document.doc" ainsi
| que le modele "modele.dot".
| Jusque là tout va bien.
C'est une façon de parler, car rien ne va. D'abord créer un modèle à
partir d'un document me parait résulter d'une organisation des stockages
de fichiers et de principes plus que douteux. Un document se crée à
partir d'un modèle et c'est ce que Word fait : il n'attache pas le
document comme modèle, mais bien le modèle du document. Il est plus que
probable que personne n'avait traité ce cas tordu chez microsoft et dire
que c'est un bug...
| Maintenant si on referme le nouveau document (sans l'enregister peut
| importe) on constate que le modele est toujours présent dans la
| fenêtre VBE.
|
| Ce n'est pas un pb d'affichage, le modele est bel et bien chargé et
| verrouillé au niveau du sytème de fichier. Au niveau VBA, il est
| toujours présent dans la collection "application.templates".
| Impossible de le décharger autrement qu'en quittant Word.
| J'ai essayé en ré-ouvrant et refermant directement le document
| "document.doc", en créant un document directement à partir du modèle
| ou en ouvrant le modèle lui même.
J'ai regardé rapidement ce problème et, je peux me tromper, mais je n'ai
rien trouvé qui permette facilement de décharger le modèle, et à mon
avis c'est heureux. Que penserait-on si un programme ne possédant pas
les droits pour le faire, se mettait à décharger les modèles en mémoire.
Pas contents serions-nous, n'est-il pas ?
| Si quelqu'un a une idée cela m'aidrait beaucoup car le fameux modèle
| est utilisé par de nombreux utilisateurs et je ne peux le mettre à
| jour tant que tout le monde n'a pas quitter Word.
Mon idée c'est que tu t'aiderais toi-même en interdisant ces pratiques
et en générant normalement tes documents. Cela dit, cela ne t'aiderait
en rien pour la mise à jour du modèle : une mise à jour sur un modèle
actif ou potentiellement actif, ouah !!!!
Peut être pourrait tu travailler sur une copie, ou un master si tu
préfères, enfin ce que j'en dis...
--
A+
G.M. MVP Word
'Guy Moncomble' nous a écrit ...
Le problème, Guy, est que c'est Word lui-même qui propose le
"Créer un document à partir d'un document existant"
Dans les dernières versions c'est dans le volet 'Nouveau document' !
Word fait alors un drôle de mélange : il charge le modèle d'origine
et reprend le contenu du document 'existant'.
Je suis d'accord avec toi, c'est tordu . Et à éviter.
N'empêche que Word le propose... :-p
Ceci dit je ne suis pas complètement certain que le fait que VBE
conserve alors le VBproject même documents fermés soit si gênant
que ça pour utiliser le modèle. C'est à vérifier. Ensuite on doit
pouvoir faire un peu le ménage avec vbproject.References.Remove
s'il faut vraiment faire le ménage...
Anacoluthe
« Je déteste les travaux de ménage. Vous faites les lits,
la vaisselle et six mois après, tout est à recommencer. »
- Joan RIVERS
solution à mon probleme et le non le moyen de m'en passer
Effectivement, comme l'a dit Anacoluthe, Word permet de "Créer un document à
partir d'un document existant" et cela depuis la version 97. Mais la question
n'est pas pourquoi je le fait de cette facon, car, croyez moi, ce pourquoi à
été parfaitement et longuement réfléchi.
comme si on faisait une copie d'un doc et qu'on l'ouvrait ensuite. Sauf que
dans ce cas la copie n'est pas enregistréé ce qui laisse à l'utilisateur la
possiblité de la sauvegarder à l'endroit qu'il désire.
Cette facon de faire n'est pas du tout "tordue" elle a au contraire un
avantage tres interessant. Au lieu de proposer à mes 150 utilisateurs actuels
de créér de nouveaux documents à partir de modèles (au sens word : .dot) je
leur propose de le faire à partir de documents (.doc) que je vais appeler
pseudo-modeles. L'intérêt de la chose c'est que ma centaine de pseudo-modèles
ont tous le meme modèle word (.dot) ce qui me permet de séparer la gestion du
style de celle du contenu. Comme ca le jour où le big chief de la com décide
par exemple que les titres de niveau 1 doivent changer de couleur, je n'ai
qu'un seul .dot a modifier au lieu de 100 ou plus (=réaction rapide et
uniformité garantie).
Sinon pour ce qui est de faire le menage, la collection vbproject.references
contients des liens vers des bibliotheques pas vers des modeles. Mais merci
quand même, au moins tu as fait une proposition.
L.Gris
'l.gris' nous a écrit ...
OK compris, mais je maintiens quand même :
- créer à partir d'un modèle (méthode 1) (modèle local! utiliser
au besoin un système de déploiement sur le réseau)
- ouvrir à partir d'un document existant, avec enregistrer_sous
un autre nom (méthode 2)
Dans cette méthode on a l'habitude pour ces pseudo-modèles comme
vous dites, généralement partagés, de forcer la lecture seule.
- éviter 'créer à partir d'un document'(méthode 3) ou alors
s'arranger pour que ces documents n'aient pas de modèles
attachés et surtout pas de modèle partagé sur réseau...
AMHA que vous preniez la méthode 1, la méthode 2 ou à la rigueur
la méthode 3 sans modèle, vous devriez à la fois répondre à vos
besoins (styles ou autres éléments communs) et éviter vos soucis...
Anacoluthe
« Si le problème a une solution, il ne sert à rien de s'inquiéter.
Mais s'il n'en a pas, alors s'inquiéter ne change rien. »
- Proverbe tibétain