Les modèles sont utilisés pour définir rapidement une apparence standard pour un document ou un groupe de documents. La chose merveilleuse à propos des modèles est que vous pouvez définir un modèle pour donner un aspect à votre document et un autre modèle pour lui donner un aspect complètement différent. Tout ce que vous avez à faire, bien sûr, est de changer le modèle associé à un document.

Changer le modèle associé à un ou deux documents est assez simple. Et si vous avez un répertoire plein de documents dont les modèles doivent être modifiés? Cela peut devenir assez fastidieux très rapidement. C’est là qu’une macro peut venir à la rescousse – pour soulager ce vieil ennui et faire le banal très rapidement. La macro suivante, ChangeTemplates, modifie tous les documents d’un répertoire particulier pour s’assurer qu’ils utilisent le modèle souhaité.

Sub ChangeTemplates()

Dim strDocPath As String     Dim strTemplateB As String     Dim strCurDoc As String     Dim docCurDoc As Document

' set document folder path and template strings     strDocPath = "C:\path to document folder\"

strTemplateB = "C:\path to template\templateB.dotx"



' get first doc - only time need to provide file spec     strCurDoc = Dir(strDocPath & "*.doc?")



' ready to loop (for as long as file found)

Do While strCurDoc <> ""

' open file         Set docCurDoc = Documents.Open(FileName:=strDocPath & strCurDoc)

' change the template         docCurDoc.AttachedTemplate = strTemplateB         ' save and close         docCurDoc.Close wdSaveChanges         ' get next file name         strCurDoc = Dir     Loop     MsgBox "Finished"

End Sub

Pour utiliser la macro, assurez-vous simplement que les variables strDocPath et strTemplateB sont définies correctement. La macro modifie les associations de modèles pour tous les documents d’un répertoire particulier. Si vous voulez quelque chose d’un peu plus discriminant, une macro différente est en ordre. Par exemple, vous souhaiterez peut-être que la macro examine chaque document et ne modifie que ceux qui utilisent TemplateA afin qu’ils utilisent maintenant TemplateB. Dans ce cas, vous trouverez la macro suivante très pratique:

Sub TemplateBatchChange()

Dim objPropertyReader     Dim strFolder As String     Dim strFileName As String     Dim objThisDoc As Word.Document     Dim strFindTemplate As String     Dim strReplaceTemplate As String     Dim strAffectedDocs As String

On Error Resume Next

'Create the PropertyReader object     Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")

If Err.Number <> 0 Then         MsgBox "You must install the DSOleFile component. See " & _           "http://support.microsoft.com/?kbid=224351"

GoTo FinishUp     End If

'Get the template names     strFindTemplate = UCase(InputBox("Name of template to find"))

7     strReplaceTemplate = InputBox("Name of replacement template")



'Make sure it's a valid template. Try to create a new document based on it.

Set objThisDoc = Word.Documents.Add(strReplaceTemplate, Visible:=False)

If Err.Number <> 0 Then         'No such template         MsgBox "There is no accessible template named " & strReplaceTemplate         GoTo FinishUp     End If     'Close the test document     objThisDoc.Close wdDoNotSaveChanges

On Error GoTo ErrorHandler     'Get the current documents path     strFolder = Word.Application.Options.DefaultFilePath(wdDocumentsPath) _       & Word.Application.PathSeparator

'Examine all Word documents in the directory

'Get the first document name     strFileName = Dir(strFolder & "*.doc?")



While strFileName <> ""

'Look at the template name         If UCase(objPropertyReader.GetDocumentProperties _           (strFolder & strFileName).Template) = strFindTemplate Then

'It matches. Open the document             Set objThisDoc = Word.Documents.Open _               (FileName:=strFileName, Visible:=False)



'Change the attached template             objThisDoc.AttachedTemplate = strReplaceTemplate

'Save the change             objThisDoc.Close wdSaveChanges

'Note the document             strAffectedDocs = strAffectedDocs & strFileName & ", "

End If         'Get the next document         strFileName = Dir     Wend

'Report the results     If strAffectedDocs = "" Then         MsgBox "No documents were changed.", , "Template Batch Change"

Else         'Remove the trailing comma and space         strAffectedDocs = Left(strAffectedDocs, Len(strAffectedDocs) - 2)



MsgBox "These documents were changed: " & _           strAffectedDocs, , "Template Batch Change"

End If     GoTo FinishUp

ErrorHandler:

Set objThisDoc = Nothing     Set objPropertyReader = Nothing     Err.Raise vbError + 1001, "TemplateBatchChange", _       "TemplateBatchChange encountered an error: " & Err.Description

FinishUp:

'Release object references     Set objThisDoc = Nothing     Set objPropertyReader = Nothing End Sub

Pour utiliser cette macro, vous devez d’abord vous assurer que le composant DSOLEFILE (disponible gratuitement auprès de Microsoft) est installé sur votre système.

Pour en savoir plus sur ce composant, consultez l’article 224351 de la base de connaissances Microsoft. La macro vous permet de spécifier un nom de modèle à remplacer et le nom du modèle par lequel le remplacer. Il vérifie même que le modèle de remplacement existe.

Cette macro recherche les documents dans le dossier de documents Word par défaut.

Si vous souhaitez rechercher directement dans un autre, vous devez vous assurer que la variable strFolder est définie sur le chemin complet du dossier que vous souhaitez utiliser.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (10338) s’applique à Microsoft Word 2007, 2010, 2013 et 2016. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu de Word ici: link: / word-Batch_Template_Changes [Modifications du modèle par lots].