Lorsque vous travaillez avec d’autres personnes dans votre entreprise ou peut-être avec un groupe de clients, vous souhaiterez peut-être créer un fichier personnalisé pour chaque client. Bien qu’il puisse être préférable de faire la création en utilisant un publipostage, si vos besoins de personnalisation sont modestes, il existe un moyen plus simple.

Commencez par créer un fichier texte ordinaire contenant les noms des personnes qui doivent recevoir votre document, un nom par ligne. La macro remplira alors le nom dans l’en-tête d’un document et enregistrera le document sous le nom de cette personne. Ainsi, si votre fichier texte contient quinze personnes, vous vous retrouverez avec quinze copies du document, une par personne. Chacun sera personnalisé avec le nom de l’individu dans l’en-tête.

Le processus pour effectuer une telle tâche est assez simple: ouvrez le fichier texte, saisissez un nom, mettez-le dans l’en-tête, puis enregistrez le document. Un autre nom est saisi et le processus est répété jusqu’à ce qu’il n’y ait plus de noms dans le fichier. La macro suivante met en œuvre un tel processus:

Sub SaveNameFiles()

Dim sName As String     Dim sFile As String

Open "c:/names.txt" For Input As #5

On Error Resume Next     Do While Not EOF(5)

' get the name         Line Input #5, sName         sFile = sName & ".doc"

sFile = "c:\mypath\" & sFile

ActiveWindow.ActivePane.View.SeekView = _           wdSeekCurrentPageHeader         Selection.WholeStory         Selection.Delete         Selection.TypeText Text:=sName

ActiveWindow.ActivePane.View.SeekView = _           wdSeekMainDocument         ActiveDocument.SaveAs FileName:=sFile     Loop

Close #5

ActiveWindow.ActivePane.View.SeekView = _       wdSeekCurrentPageHeader     Selection.WholeStory     Selection.Delete     ActiveWindow.ActivePane.View.SeekView = _       wdSeekMainDocument End Sub

La partie délicate de la macro consiste à utiliser la propriété .SeekView pour spécifier l’histoire du document avec laquelle vous souhaitez travailler. Telle qu’implémentée ici, la propriété .SeekView est utilisée à plusieurs reprises pour basculer entre la zone d’en-tête et le document principal.

Notez également que la variable sFile spécifie le nom du fichier dans lequel le document personnalisé sera enregistré. Juste après que le nom est récupéré dans le fichier texte, la variable sFile est construite en ajoutant l’extension de fichier .doc et le chemin au début du nom de fichier. (Vous devriez changer le chemin pour celui qui est approprié pour votre système.)

L’opération de sauvegarde proprement dite est relativement simple; la méthode .SaveAs est utilisée avec un nom de fichier. Il s’agit de la ligne de code la plus sujette aux erreurs dans la macro, car l’un des noms lus à partir du fichier peut inclure des caractères inappropriés pour des noms de fichiers valides. Si tel est le cas, une erreur est générée et la macro continue avec la ligne suivante. Le document, cependant, ne sera pas enregistré sous le nom incriminé.

Une fois la boucle (saisie des noms et enregistrement) terminée, la zone d’en-tête est effacée et le .SeekView revient au document principal.

_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 (7983) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365. Vous pouvez trouver une version de cette astuce pour le ancienne interface de menu de Word ici:

link: / word-Saving_Personalized_Copies_of_a_Document [Sauvegarde de copies personnalisées d’un document].