Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Publipostage

3 réponses
Avatar
Philippe Pons
Bonjour,

Je teste le publipostage.
Les adresses sont prises dans un fichier XL.
Avec l'enregistreur de macro, j'obtient le code suivant.
Le problème: à l'exécution du code, la fusion est réalisée. J'obtient autant
de lettre que d'adresses.
Mais les champs adresses sont vides.

Une idée?

Merci d'avance
Philippe

Sub Publi1()
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"F:\Documents and Settings\Administrateur\Bureau\SAV\Dossiers
techniques\Essai analyse Excel\Analyse de données3.xls" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="",
_
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False,
_
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data
Source=F:\Documents and Settings\Administrateur\Bureau\SAV\Dossiers
techniques\Essai analyse Excel\Analyse de données3.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLE" _
, SQLStatement:="SELECT top 10 * FROM `'Adresses relances$'`",
SQLStatement1:="" _
, SubType:=wdMergeSubTypeAccess
ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _
wdFieldAddressBlock, Text:= _
"\f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13)
& "<<_COMPANY_" & Chr(13) & ">><<_STREET1_" & Chr(13) & ">><<_STREET2_" &
Chr(13) & ">><<_POSTAL_>><< _CITY_>><<" & Chr(13) & "_STATE_>>"" \l 1036 \c
0 \e """""
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
ActiveDocument.MailMerge.Execute Pause:=True
End Sub

3 réponses

Avatar
Bonsoir à tous,
L'objet range restera un mystère pour moi encore ce soir, je peux cependant te dire qu'il faut corriger ta macro ainsi :

ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:= "MERGEFIELD TITLE0"
ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:="MERGEFIELD COMPANY"

C'est à dire mettre les fiels.add évidemment dans des lignes différentes, reste à taper le texte entre !!
Tout ce que je sais faire c'est avec un range c'est :
ActiveDocument.Range.InsertAfter " texte "
qui insert toujours le texte après les champs.
Espérant que ça te sera quand même utile.
Merci d'avoir lu jusque là.


"Philippe Pons" a écrit dans le message de news: %
Bonjour,

Je teste le publipostage.
Les adresses sont prises dans un fichier XL.
Avec l'enregistreur de macro, j'obtient le code suivant.
Le problème: à l'exécution du code, la fusion est réalisée. J'obtient autant
de lettre que d'adresses.
Mais les champs adresses sont vides.

Une idée?

Merci d'avance
Philippe

Sub Publi1()
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de données3.xls" _
, ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="",
_
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse,
_
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID­min;Data
Source=F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de données3.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLE" _
, SQLStatement:="SELECT top 10 * FROM `'Adresses relances$'`",
SQLStatement1:="" _
, SubType:=wdMergeSubTypeAccess
ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _
wdFieldAddressBlock, Text:= _
"f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13)
& "<<_COMPANY_" & Chr(13) & ">><<_STREET1_" & Chr(13) & ">><<_STREET2_" &
Chr(13) & ">><<_POSTAL_>><< _CITY_>><<" & Chr(13) & "_STATE_>>"" l 1036 c
0 e """""
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
ActiveDocument.MailMerge.Execute Pause:=True
End Sub




Avatar
Philippe Pons
Pour moi aussi!
Merci pour ta réponse, je teste....
Philippe


"@pollo" a écrit dans
le message de news:
Bonsoir à tous,
L'objet range restera un mystère pour moi encore ce soir, je peux
cependant te dire qu'il faut corriger ta macro ainsi :


ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text: "MERGEFIELD TITLE0"
ActiveDocument.Range.Fields.Add Range:=Selection.Range,
Text:="MERGEFIELD COMPANY"


C'est à dire mettre les fiels.add évidemment dans des lignes différentes,
reste à taper le texte entre !!

Tout ce que je sais faire c'est avec un range c'est :
ActiveDocument.Range.InsertAfter " texte "
qui insert toujours le texte après les champs.
Espérant que ça te sera quand même utile.
Merci d'avoir lu jusque là.


"Philippe Pons" a écrit dans le
message de news: %

Bonjour,

Je teste le publipostage.
Les adresses sont prises dans un fichier XL.
Avec l'enregistreur de macro, j'obtient le code suivant.
Le problème: à l'exécution du code, la fusion est réalisée. J'obtient
autant


de lettre que d'adresses.
Mais les champs adresses sont vides.

Une idée?

Merci d'avance
Philippe

Sub Publi1()
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de données3.xls" _
, ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True,
_


AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="",


_
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:úlse,


_
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data


Source=F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de
données3.xls;Mode=Read;Extended


Properties=""HDR=YES;IMEX=1;"";Jet OLE" _
, SQLStatement:="SELECT top 10 * FROM `'Adresses relances$'`",
SQLStatement1:="" _
, SubType:=wdMergeSubTypeAccess
ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _
wdFieldAddressBlock, Text:= _
"f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" &
Chr(13)


& "<<_COMPANY_" & Chr(13) & ">><<_STREET1_" & Chr(13) & ">><<_STREET2_"
&


Chr(13) & ">><<_POSTAL_>><< _CITY_>><<" & Chr(13) & "_STATE_>>"" l 1036
c


0 e """""
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
ActiveDocument.MailMerge.Execute Pause:=True
End Sub








Avatar
Bonjour à tous,

Bon pas encore tout compris sur la propriété Range, mais en remplaçant le code

ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:= "MERGEFIELD TITLE0"
ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:="MERGEFIELD COMPANY"


par

ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:= "MERGEFIELD TITLE0"

Selection.MoveEnd unit:=wdParagraph, count:=1
Selection.Move unit:=wdCharacter

Dim Ici As Word.Range
Set Ici = Application.Selection.Range
Ici.Collapse

ActiveDocument.Range.InsertAfter " text "

Selection.MoveEnd unit:=wdParagraph, count:=1
Selection.Move unit:=wdCharacter

ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text:="MERGEFIELD COMPANY"

On insert du texte entre les champs. Ca peut surement s'améliorer une fois qu'on a mieux compris parce que là ça fait un peu
artisanal.

Merci d'avoir lu jusque là.



"Philippe Pons" a écrit dans le message de news: %
Pour moi aussi!
Merci pour ta réponse, je teste....
Philippe


"@pollo" a écrit dans
le message de news:
Bonsoir à tous,
L'objet range restera un mystère pour moi encore ce soir, je peux
cependant te dire qu'il faut corriger ta macro ainsi :


ActiveDocument.Range.Fields.Add Range:=Selection.Range, Text: > "MERGEFIELD TITLE0"
ActiveDocument.Range.Fields.Add Range:=Selection.Range,
Text:="MERGEFIELD COMPANY"


C'est à dire mettre les fiels.add évidemment dans des lignes différentes,
reste à taper le texte entre !!

Tout ce que je sais faire c'est avec un range c'est :
ActiveDocument.Range.InsertAfter " texte "
qui insert toujours le texte après les champs.
Espérant que ça te sera quand même utile.
Merci d'avoir lu jusque là.


"Philippe Pons" a écrit dans le
message de news: %

Bonjour,

Je teste le publipostage.
Les adresses sont prises dans un fichier XL.
Avec l'enregistreur de macro, j'obtient le code suivant.
Le problème: à l'exécution du code, la fusion est réalisée. J'obtient
autant


de lettre que d'adresses.
Mais les champs adresses sont vides.

Une idée?

Merci d'avance
Philippe

Sub Publi1()
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de données3.xls" _
, ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True,
_


AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="",


_
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:úlse,


_
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data


Source=F:Documents and SettingsAdministrateurBureauSAVDossiers
techniquesEssai analyse ExcelAnalyse de
données3.xls;Mode=Read;Extended


Properties=""HDR=YES;IMEX=1;"";Jet OLE" _
, SQLStatement:="SELECT top 10 * FROM `'Adresses relances$'`",
SQLStatement1:="" _
, SubType:=wdMergeSubTypeAccess
ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _
wdFieldAddressBlock, Text:= _
"f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" &
Chr(13)


& "<<_COMPANY_" & Chr(13) & ">><<_STREET1_" & Chr(13) & ">><<_STREET2_"
&


Chr(13) & ">><<_POSTAL_>><< _CITY_>><<" & Chr(13) & "_STATE_>>"" l 1036
c


0 e """""
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
ActiveDocument.MailMerge.Execute Pause:=True
End Sub