Bonjour,
Je ne suis pas très fort en VB et de ce fait je galère souvent.
Mon executable à pour objectif de piloter un publipostage sous Word suivant les paramètres passés.
Ma particularité est que je souhaite remplacer un caractère par un autre : || par ^p (soit par un retour à la ligne).
Lorsque je suis en mode Publipostage dans un nouveau document, pas de problème car je réalise le traitement après la création
par Word du document contenant les données fusionnées (Cf. ci-après)
Mon problème est lorsque le document est un mail ou une télécopie, car WORD sur e Execute du wdSendToEmail ou wdSendToFax
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
34
35
36 With objdoc.MailMerge .OpenDataSource Name:=mergefile, ReadOnly:=True Select Case Subject Case "1" ' Publipostage vers nouveau document .Destination = wdSendToNewDocument .Execute Pause:=False Case "2" ' Publipostage via emails .Destination = wdSendToEmail .MailSubject = Title .MailAddressFieldName = Adresse .Execute Pause:=True Case "3" ' Publipostage via télécopie .Destination = wdSendToFax .MailAddressFieldName = Adresse End Select End With If Subject = "1" Then objdoc.Close SaveChanges:=False objapp.ActiveDocument.ActiveWindow.WindowState = wdWindowStateMaximize objapp.ActiveDocument.ActiveWindow.Selection.Find.ClearFormatting objapp.ActiveDocument.ActiveWindow.Selection.Find.Replacement.ClearFormatting With objapp.ActiveDocument.ActiveWindow.Selection.Find .Text = "||" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With objapp.ActiveDocument.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll End If
réalise pour chacun des enregistrements dans une nouvelle fenêtre qu'il ferme après traitement.
Mon idée est donc d'utiliser l'événement MailMergeAfterRecordMerge ; si je passe bien dans l'évènement pour chacun des enregistrements de mon datasource
je n'arrive pas exprimer mon action correctement.
J'ai essayé pas mal de combinaison et je rencontre toujours un problème suivant la forme de la méthode ci-après
En fait je ne sais pas comment dire que mon find s'adresse au document de fusion qui est en cours (d'ailleurs comme
je suis dans l’événement après fusion de l'enregistrement, il doit bien le connaitre non ?)
Avec la méthode écrite comme cela je n'ai pas d'erreur mais cela ne fait rien et mon texte reste tel quel
Des idées, des pistes ?
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 Private Sub objapp_MailMergeAfterRecordMerge(ByVal Doc As document) Doc.ActiveDocument.ActiveWindow.Selection.Find.ClearFormatting Doc.ActiveDocument.ActiveWindow.Selection.Find.Replacement.ClearFormatting With Doc.ActiveDocument.ActiveWindow.Selection.Find .Text = "||" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Doc.ActiveDocument.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll End Sub
Merci d'avance.
Partager