Modèle complémentaire et QuickParts

Forum Microsoft Office Word

Modérateur : Argitxu

Modèle complémentaire et QuickParts

Publicité
 

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Modèle complémentaire et QuickParts

Message non lu par Petit Denis » 04 avr. 2018, 16:19

Bonjour,
Microsoft ayant supprimé l'ancien éditeur d'équations, un modèle complémentaire (fabrication perso sous word 2000-2003) est devenu moins pratique ; les équations ne peuvent être modifiées.

J'ai donc décidé de le recréer en mode 2007-2016 avec le nouvel éditeur d'équations.
Par la même occasion, j'ai utilisé Custom UI Editor, pour faire un nouvel onglet propre à ce modèle (langage Xml).

Le modèle est fait (Les AMIS ont râlé : chaque bouton est actionné par une macro). Quand j'édite le fichier, toutes les macros derrière les boutons fonctionnent parfaitement.
Par contre dès que je copie le modèle complémentaire dans le dossier de démarrage de word (Startup), je reçois une erreur 5941 (le membre de la collection requise n'est pas accessible).

Effectivement, sur le net on trouve plein de soucis de ce type : les quickparts ne sont pas manipulables via VBA. Sur la FAQ, j'ai trouvé qu'il fallait déclarer : Templates.LoadBuildingBlocks.

Code : Tout sélectionner

Sub Na(control As IRibbonControl)
'
'Insérer Na+
'
Templates.LoadBuildingBlocks
ActiveDocument.AttachedTemplate.BuildingBlockEntries("Na").Insert _
        Where:=Selection.Range, RichText:=True
End Sub
Mais ça ne fonctionne pas mieux, je m'en doutais puisque les quickparts sont situées dans le fichier dotm et pas dans le BuildingBlocks.dotx

Question 1 : comment modifier les macros (une centaine) pour que les quickparts soient fonctionnelles ?
Question 2 : les modules où sont copiées les macros peuvent-ils être renommés ?

Merci par avance

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1212
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Modèle complémentaire et QuickParts

Message non lu par m@rina » 04 avr. 2018, 23:11

Hello Petit Denis ;)

C'est quelque chose que j'ai pas mal utilisé, et je n'ai pas eu de problèmes avec ça.
Du coup, je n'arrive pas bien à voir d'où vient ton erreur.

Le fait de devoir loader les templates, c'est juste suite à un constat. Ce n'est pas que ça ne fonctionne si on le fait pas, mais ça ne fonctionne pas du premier coup ! C'est à dire que tant que la personne n'a pas utilisé un bloc de construction quelconque, la macro ne fonctionne pas. Donc en lançant le load tout de suite, on est sûr que ça fonctionne.

Les blocs de construction se stockent soit dans un modèle soit dans un building blocks. Pour être toujours dispo, ils doivent être
- soit dans le normal.dotm
- soit dans un complément (ton cas)
- soit dans un building blocks quelconque

(Dans un modèle particulier, ils sont dispo uniquement dans les docs basé sur ce modèle.)

Personnellement, j'ai plutôt tendance à diviser les choses, et à mettre les blocs dans un building blocks.

Il reste le fichier xml. As-tu vérifié que les macros n'y sont pas avec un chemin en dur ? Je ne vois que ça. Auquel cas, effectivement, lorsque tu mets le fichier ailleurs, s'il cherche la macro sur le fichier d'origine, ça va coincer.

Pourrais-tu me passer le modèle que je regarde ?
Et aussi, souhaites tu que les macros soient toujours accessibles ou seulement depuis un modèle ?

Parce que, maintenant que je regarde ta macro, je vois qu'elle dirige l'insertion du bloc depuis le modèle attaché. Or, un modèle complémentaire n'est pas un modèle attaché. Par défaut, c'est le normal.dotm si l'utilisateur n'a rien choisi, ou bien c'est le modèle choisi depuis l'emplacement des modèles et non pas depuis le Startup. Si ton bloc est dans le complément, il faut mettre l'adresse du complément, en utilisant la fonction Environ pour que ce soit dispo pour tout le monde :

Code : Tout sélectionner

chemin = Environ("USERPROFILE") & "\AppData\Roaming\Microsoft\Templates\Denis\"
Application.Templates(chemin).BuildingBlockEntries("na").Insert Where:=Selection.Range, RichText _
        :=True
Pour les module, de mémoire, oui, on peut les renommer, on n'utilise pas le nom.

m@rina
m@rina

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Re: Modèle complémentaire et QuickParts

Message non lu par Petit Denis » 06 avr. 2018, 19:01

Bonsoir,
pour la question 2 : c'est réglé, j'ai fouillé et j'ai trouvé.

Pour la question 1 :
Si j'ai compris, un modèle complémentaire peut être disponible (c'est déjà le cas chez moi avec d'autres), mais le document créé est basé sur le normal.dot (dotc, dotm) et on peut accéder aux quickparts des modèles rattachés.

Donc rattacher un modèle : onglet développeur, modèles globaux et compléments et cocher le modèle à rattacher ?

Je vais regarder de ce côté. [edit]non ça fonctionne pas comme ça ; la case se coche dès que le modèle est dans le startup[/edit]

Question subsidiaire : concernant le chemin du modèle.
On peut écrire le chemin en dur dans la macro, mais si le modèle change de PC, il change aussi de dossier (y'a longtemps que mes modèles ne sont plus dans le dossier d'origine ; plus facile à sauvegarder). Donc c'est possible de récupérer le chemin :

Code : Tout sélectionner

Sub shell_demarrage()
'
' Chemin de démarrage Macro
' 
Dim chemin As Variant
chemin = Application.StartupPath
Shell "C:\windows\explorer.exe " & chemin, vbMaximizedFocus

End Sub
Si besoin, ce chemin peut-il être utilisé dans les macros si c'était nécessaire et comment ?

Je ne peux pas joindre le fichier (trop gros)...

Merci pour la réponse.
--
Petit Denis

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1212
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Modèle complémentaire et QuickParts

Message non lu par m@rina » 07 avr. 2018, 16:37

Hello Denis,

Je t'ai envoyé le fichier modifié par mail.
Pour le chemin des blocs, j'ai mis le chemin de ThisDocument. ThisDocument c'est le document (template) qui contient les macros. Ainsi les blocs seront toujours trouvés puisque lié au modèle.

Ce modèle est donc à mettre dans le dossier Startup de Word. Et il est inutile d'aller le charger dans les complément, car c'est justement une spécificité de Word : tout ce qui est dans le Startup se charge automatiquement au lancement de Word.

Dans le cas de ton fichier, si l'utilisateur a bien mis ton modèle dans le Startup, il pourra donc utiliser n'importe lequel de ses modèles et il aura accès à ton onglet.
m@rina

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Re: Modèle complémentaire et QuickParts

Message non lu par Petit Denis » 07 avr. 2018, 22:14

Merci, ça fonctionne parfaitement comme je voulais.

J'ai juste encore une petite question : comment faire que dans la macro suivante, le texte inséré (éditeur d'équations) ne soit pas en italique mais normal.

Code : Tout sélectionner

Sub puissance(control As IRibbonControl)
Dim objRange As Range
Dim objEq As OMath
Dim inta As String

strQuestion = "Saisir une valeur de la puissance."
inta = InputBox(strQuestion)

Set objRange = Selection.Range
objRange.Text = "×" + ChrW(12310) + "10" + ChrW(12311) + "^" + "(" + inta + ")"
Set objRange = Selection.OMaths.Add(objRange)
Set objEq = objRange.OMaths(1)
objEq.BuildUp
End Sub
pas de problème si "inta" est un nombre mais si c'est une lettre, elle est en italique...

Merci

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1212
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Modèle complémentaire et QuickParts

Message non lu par m@rina » 08 avr. 2018, 03:33

Après le Set ObRange, tu peux ajouter :

Code : Tout sélectionner

objRange.Font.Italic = False
Par contre, c'est curieux car c'est effectivement en italique (si je regarde la marque de formatage), et pourtant je ne vois pas d'italique...
m@rina

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Re: Modèle complémentaire et QuickParts

Message non lu par Petit Denis » 08 avr. 2018, 17:44

C'est pas pour les quickparts, parce que je l'ai ai manuellement formaté en "normal" avant de les enregistrer (Alt + F3)
C'est juste pour les "équations ouvertes" où j'utilise objEq.BuildUp
J'ai testé : ça reste en italique.

Merci

Avatar du membre
Petit Denis
VIP
VIP
Messages : 44
Enregistré le : 24 sept. 2010, 15:56

Re: Modèle complémentaire et QuickParts

Message non lu par Petit Denis » 11 avr. 2018, 14:22

Coucou,
merci l'enregistreur de macro qui m'a bien guidé :

Code : Tout sélectionner

Sub puissance(control As IRibbonControl)
'
'Insèrer une puissance de 10 en choisissant l'exposant
'
Dim objRange As Range
Dim objEq As OMath
Dim inta As String

strQuestion = "Saisir une valeur de la puissance."
inta = InputBox(strQuestion)

Set objRange = Selection.Range
objRange.Text = "×" + ChrW(12310) + "10" + ChrW(12311) + "^" + "(" + inta + ")"
Set objRange = Selection.OMaths.Add(objRange)
Set objEq = objRange.OMaths(1)
objEq.BuildUp

'Ce que j'ai ajouté...
   Selection.WholeStory
    Selection.Font.Italic = False
    Selection.EndKey Unit:=wdStory
'... et qui fonctionne
End Sub

Répondre