Soucis avec BuildingBlockEntries

3 réponses
Avatar
Emile63
Bonjour =C3=A0 tous,

Je cherche a r=C3=A9adapter un ancien document sur Word 2007, qui fonctionn=
ait alors avec le pique-notes de l'=C3=A9poque (Autoentries)
Sur 2007, avec l'enregistreur =C3=A7a donne ceci (voir ci-apr=C3=A8s), la s=
eule diff=C3=A9rence constat=C3=A9e =C3=A9tant que le remplacement de "Auto=
entries" par le "BuildingBlockEntries"
pour le reste ma proc=C3=A9dure est identique:

ActiveDocument.AttachedTemplate.BuildingBlockEntries("_FR_STR").Insert =
Where:=3DSelection.Range, RichText:=3DTrue


Sauf que =C3=A7a ne fonctionne pas, j'ai droit au message ci-apr=C3=A8s:

-----------------------------------------------
Erreur d=E2=80=99ex=C3=A9cution '5941':
Le membre de l'action requise n'existe pas!
-----------------------------------------------

Est-ce que quelqu'un saurait me dire ce que j'oublie ?

Je vous remercie d'avance pour votre aide, en vous souhaitant une bonne jou=
rn=C3=A9e.

3 réponses

Avatar
Geo
Bonjour
A priori c'est une entrée qui manque.
Si vous pouviez être un peu plus précis : ce qui marche en 2007, ce qui
ne marche plus en 20xx.
Et comment vous avez basculé de l'un à l'autre.
A voir peut-être :
http://www.faqword.com/index.php/word/faq-word/environnement/618
Avatar
Emile63
Bonjour Geo,
Merci pour votre aide.
Oui vous avez raison, je vais tâcher d’être plus explicit e : :-)
J’ai placé un document « Modèle contrat.dotm» s ur le réseau auquel accèdent mes petits camarades et moi-mêm e.
Dans ce contrat il y a quelques entrées dans le pic-notes auxquelles j ’accède avec une macro, en fonction de certains choix (de Lang ue) qui entre autre contient le code suivant :
ActiveDocument.AttachedTemplate.BuildingBlockEntries(Entrée_du_pic_not e_Anglais).Insert Where:=Selection.Range, RichText:=True
Et donc si je lance ce document depuis mon poste de travail, ça foncti onne, mais s’il est lancé depuis un autre poste ça ne fon ctionne plus. Ceci est une différence avec l’ancienne version de Word puisque ce document fonctionnait tel quel avant.
Je pense (et pardon si je me trompe) que le document actif auquel l†™entrée du pic note, présente dans le modèle, se réf ère n’est pas /plus le modèle.dotm actif, mais doit cherc her quelque part dans normal dot de l’utilisateur…
Et donc je me demandais comment « forcer » à chercher cette entrée du pic note dans le document original : modèle.dotm (du r éseau)
Je brode donc autour de :
Templates.Name." R:ContratsModèle Contrat.dotm" .BuildingBlockEntrie s(Entrée_du_pic_note_Anglais).Insert Where:=Selection.Range, RichTex t:=True
Mais sans grand succès pour l’instant.
Par contre ça fonctionne avec une boucle :
For Each mytemplate In Templates
If mytemplate.Name = " Modèle contrat.dotm" Then _
mytemplate.BuildingBlockEntries(Entrée_du_pic_note_Angla is).Insert Where:=Selection.Range, RichText:=True
Next
Et donc il trouve bien le modèle et insert le pic note sur tous les po stes, mais j’aurais aimé comprendre le pourquoi du comment, et aussi ne faire qu’une ligne de code au lieu de 4
Je vous remercie d'avance pour votre aide, et vous souhaite une bonne journ ée.
Emile
Avatar
Geo
Bonjour Émile
Merci pour ces explications détaillées, surtout que vous avez une
solution qui fonctionne et qui permet d'éliminer pas mal d'autres
hypothèses.
Il doit y avoir une erreur dans la retranscription de
Templates.Name." R:ContratsModèle Contrat.dotm"

Je pense que ça doit être :
Templates("Modèle Contrat.dotm"). Du moment que le modèle est attaché,
ça devrait suffire
Le modèle est d'ailleurs connu sinon votre code de rechange ne
marcherait pas.
Par contre, j'ai essayé avec word 10.
Templates("Normal.dotm") fonctionne.
Mais impossible avec un autre nom, alors qu'ils sont bien présents dans
la collection Templates.
Ce qui est pour le moins curieux et ressemble bien à un bogue.
Dans mon cas Normal.dotm est le troisième, je ne vois donc pas
d'explication.
A la limite si c'était le premier ...
Votre code semble donc bien être la solution la plus simple, ce qui
devrait vous faire plaisir.
Bonne journée à vous aussi.