bonjour, il y a quelques mois j'ai créé un code avec l'aide de certains inscrit sur le forum, de sources extérieurs et un peu de bidouillage maison.
ce code me permets de créer automatiquement le nom du fichier et de l'enregistrer dans le répertoire que je désire.
voici le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub Macro3() 'Enregistrement auto du fichier sans espaces superflux attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then attention = "" Else attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " " contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " " fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " " designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " " agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " " service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " " Objet = ActiveDocument.Bookmarks("Objet").Range.Text Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc" End Sub
maintenant en l'enregistrant de cette façon il conserve les options de publipostage se qui peut causer des désagréments, pour cela il faut donc "terminer et fusionner" le document.
puisque je l’utilise pour la création d'un seul courrier à la fois, le publipostage n'est utile juste pour l'insertion des coordonnées du destinataire, des références client etc ... lorsque je termine et fusionne le document je choisie l'option modifier des documents individuels, puis enregistrement en cours.
et là le document se renomme par défaut lettre1. les champs deviennent du texte et les signets disparaissent. je ne peux donc plus utiliser ce code qui utilise les champs et des signets.
je pense donc garder ce code pour nommé et enregistrer le fichier de façon automatique, et je désire créer un autre code incluant cette méthode pour coller le nom du fichier quelque part sur le document de la couleur du fond du courrier; en blanc; pour que le nom du fichier soit invisible sur le document. puis enregistrer le fichier "lettre1" en utilisant par copier coller le nom du fichier qui est invisible et inclus sur le document. puis éventuellement effacer de nom de fichier invisible.
je pense que je pourrais déjà commencer mon code de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then attention = "" Else attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " " contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " " fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " " designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " " agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " " service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " " Objet = ActiveDocument.Bookmarks("Objet").Range.Text Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text
et les utiliser dans cet ordre
Code : Sélectionner tout - Visualiser dans une fenêtre à part "Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"
mais je n'ai aucune idée de quelle commande mettre devant pour coller cette ligne, ni pour désigner l'endroit ou je désire coller cela.
pensez vous que je pourrais coller cela dans l'entête ou le pied de page pour pouvoir le réutiliser ensuite lors de l'enregistrement via cette nouvelle macro ? je sais qu'il y a une option dans ces zones qui permets d'insérer le nom du fichier ce qui est différent de ce que je cherche a faire (lettre1 sera dans ce cas affiché et non le nom défini automatiquement, celui pourra effectivement y apparaitre mais après et seulement avoir été enregistré et ce n'est pas ce que je cherche à faire).
si vous pouviez me donner vos avis ou m'apporter votre aide ça serais super cool merci a ceux qui m'apporteront leurs contributions.
Partager