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

Macro dans excel pour publipostage avec word

13 réponses
Avatar
vincerig
Bonjour,

Je souhaite créer une macro dans excel pour effectuer un publipostage avec word.

donc si je décompose, je suis dans mon classeur excel qui constitue la donnée source, j'execute la macro qui :
- ouvre le fichier word de la fusion
- réalise le publipostage (uniquement la ligne 1)

des idées ??
Merci

10 réponses

1 2
Avatar
CAP2
Salut,

je n'ai pas de réponse précise, mais plutôt une suggestion :

sachant que c'est Word qui pilote un publipostage, et non pas excel (même si
ta source de données est un fichier .xls), je tenterais plutôt de créer une
macro dans Word, qui lance l'assistant publipostage, va chercher ta source
désirée et qui en bout de course de cet assistant ne demande à fusionner que
le 1er enregistrement.

Tout ça est faisable sans souci à partir de Word.

Maintenant, ce n'est qu'une suggestion et si tu tiens à lancer ton mailing à
partir de ta source Excel, je passe la main à qui veut bien la prendre ;o))

CAP2

"vincerig" a écrit dans le message de news:

Bonjour,

Je souhaite créer une macro dans excel pour effectuer un publipostage avec
word.

donc si je décompose, je suis dans mon classeur excel qui constitue la
donnée
source, j'execute la macro qui :
- ouvre le fichier word de la fusion
- réalise le publipostage (uniquement la ligne 1)

des idées ??
Merci


Avatar
HORTENSE
A priori, comme le dit CAP2, cette opération doit se faire à partir de Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la fusion est quasi
automatique... !
A bientôt !
Avatar
vincerig
HORTENSE a écrit le 19/08/2008 à 19h30 :
A priori, comme le dit CAP2, cette opération doit se faire à
partir de Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la
fusion est quasi
automatique... !
A bientôt !


Merci CAP2 & HORTENSE mais il est impératif pour moi de piloter cette opération de fusion depuis excel.
J'ai pour le moment décomposé les opérations :

1. j'ai fait une macro sur excel qui ouvre le fichier word

Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("G:_Affaires Sociales2008AdministrationMatricesMatrices CDICDI cadre autonome.dot")
wrdApp.Visible = True '

2. j'ai fait une macro sur word qui relie les champs à la base de donnée excel (les liaisons sautent avec la macro 1)

ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"G:_Affaires Sociales2008Base Recrutement TEST.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=G:_Affaires Sociales2008Base Recrutement TEST.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password" _
, SQLStatement:="SELECT * FROM `'Edition Contrat$'`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse

3. je copie/colle le code de la macro 2 dans la macro 1
et la biensur, ca marche pas...

des idées ???
Avatar
CAP2
Salut,

dans ce cas, dans ton code excel tu fais un truc du style (en supposant que
ta macro dans WORD s'appelle Publi) :

Sub LancerPubli()

Set WrdApp = CreateObject("Word.Application")
Set wrdDoc = WrdApp.Documents.Open("G:_Affaires
Sociales2008AdministrationMatricesMatrices CDICDI cadre autonome.dot")
WrdApp.Visible = True

WrdApp.Run "Publi"

End Sub

Ca marche ?

CAP2

"vincerig" a écrit dans le message de news:

HORTENSE a écrit le 19/08/2008 à 19h30 :
A priori, comme le dit CAP2, cette opération doit se faire à
partir de Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la
fusion est quasi
automatique... !
A bientôt !


Merci CAP2 & HORTENSE mais il est impératif pour moi de piloter cette
opération
de fusion depuis excel.
J'ai pour le moment décomposé les opérations :

1. j'ai fait une macro sur excel qui ouvre le fichier word

Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("G:_Affaires
Sociales2008AdministrationMatricesMatrices CDICDI cadre
autonome.dot")
wrdApp.Visible = True '

2. j'ai fait une macro sur word qui relie les champs à la base de donnée
excel
(les liaisons sautent avec la macro 1)

ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"G:_Affaires Sociales2008Base Recrutement TEST.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=G:_Affaires Sociales2008Base Recrutement
TEST.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry
Path="""";Jet OLEDB:Database Password" _
, SQLStatement:="SELECT * FROM `'Edition Contrat$'`",
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse

3. je copie/colle le code de la macro 2 dans la macro 1
et la biensur, ca marche pas...

des idées ???


Avatar
vincerig
CAP2 a écrit le 20/08/2008 à 11h02 :
Salut,

dans ce cas, dans ton code excel tu fais un truc du style (en supposant que
ta macro dans WORD s'appelle Publi) :

Sub LancerPubli()

Set WrdApp = CreateObject("Word.Application")
Set wrdDoc = WrdApp.Documents.Open("G:_Affaires
Sociales2008AdministrationMatricesMatrices CDICDI cadre
autonome.dot")
WrdApp.Visible = True

WrdApp.Run "Publi"

End Sub

Ca marche ?

CAP2

"vincerig" a écrit dans le
message de news:

HORTENSE a écrit le 19/08/2008 à 19h30 :
A priori, comme le dit CAP2, cette opération doit se faire à
partir de Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la
fusion est quasi
automatique... !
A bientôt !



Merci CAP2 & HORTENSE mais il est impératif pour moi de piloter
cette
opération
de fusion depuis excel.
J'ai pour le moment décomposé les opérations :

1. j'ai fait une macro sur excel qui ouvre le fichier word

Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("G:_Affaires
Sociales2008AdministrationMatricesMatrices CDICDI cadre
autonome.dot")
wrdApp.Visible = True '

2. j'ai fait une macro sur word qui relie les champs à la base de
donnée
excel
(les liaisons sautent avec la macro 1)

ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"G:_Affaires Sociales2008Base Recrutement TEST.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=G:_Affaires Sociales2008Base Recrutement
TEST.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System
database="""";Jet
OLEDB:Registry
Path="""";Jet OLEDB:Database Password" _
, SQLStatement:="SELECT * FROM `'Edition Contrat$'`",
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse

3. je copie/colle le code de la macro 2 dans la macro 1
et la biensur, ca marche pas...

des idées ???





Hélas... non
j'ai un problème semble-t'il avec le fait d'ouvrir la fusion word alors qu'excel est toujours ouvert.
donc j'ai rajouté la fermeture d'excel dans la macro, mais :
1. si je ferme excel en premier, la suite de la macro ne se fait pas (fusion sur excel)
2. si j'ouvre word, ferme excel, lance la fusion word, ca ne marche pas non plus.

que le VBA est mystérieux pour moi....
en tous les cas merci à toi
Avatar
CAP2
Reprenons,

tu as bien créé ta macro dans word pour faire le publipostage ?

Mettons qu'elle s'appelle "Publi".

Ensuite, tu fermes Word, et tu vas sur Excel, et tu fais la macro qui va
ouvrir word, ton doc de fusion, et qui va appeler la macro Publi.

Donc au moment où tu est sur excel et que tu lances la macro, tu ne dois
avoir qu'excel ouvert, puis la macro excel ouvre word et appelle la macro
word (Publi). Les deux logiciels sont ouverts et ça ne doit pas coincer...

La macro Publi fait son boulot de publipostage et c'est fini...

Vérifie ta séquence et tiens-moi au courant !

CAP2
Avatar
lSteph
Bonjour Vincerig,

Si je peux m'associer à l'idée proposée par Cap2 et Hortense
c'est qd même mieux quand on fait tout du même côté.

mais il est impératif pour moi de piloter cette opération
de fusion depuis excel.



dans ce cas pourquoi ne pas tout faire depuis excel.
Pour la mise en forme et pour la simplicité de ta macro, c'est bien
plus facile.

Une feuille qui sert de présentation (à l'image de ce que tu ferais
dans word,
des champs mieux délimités ,Cellules)

Un ou deux index equiv et côté vba une petite boucle sur tes
enregistrements et le tour est joué.


Cordialement.

--
lSteph

On 19 août, 19:30, HORTENSE
wrote:
A priori, comme le dit CAP2, cette opération doit se faire à partir d e Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la fusion est q uasi
automatique... !
A bientôt !


Avatar
vincerig
CAP2 a écrit le 20/08/2008 à 16h03 :
Reprenons,

tu as bien créé ta macro dans word pour faire le publipostage ?

Mettons qu'elle s'appelle "Publi".

Ensuite, tu fermes Word, et tu vas sur Excel, et tu fais la macro qui va
ouvrir word, ton doc de fusion, et qui va appeler la macro Publi.

Donc au moment où tu est sur excel et que tu lances la macro, tu ne dois
avoir qu'excel ouvert, puis la macro excel ouvre word et appelle la macro
word (Publi). Les deux logiciels sont ouverts et ça ne doit pas
coincer...

La macro Publi fait son boulot de publipostage et c'est fini...

Vérifie ta séquence et tiens-moi au courant !

CAP2


Alors je reprend : j'ai fait tout comme tu dis mais à l'ouverture de Word, j'ai un message d'alerte qui dit "impossible d'enregistrer ce fichier, il est déja ouvert dans un autre programme (c:Documents & Settings...Normal.dot).
Avatar
vincerig
lSteph a écrit le 20/08/2008 à 16h23 :
Bonjour Vincerig,

Si je peux m'associer à l'idée proposée par Cap2 et
Hortense
c'est qd même mieux quand on fait tout du même côté.

mais il est impératif pour moi de piloter cette opération
de fusion depuis excel.




dans ce cas pourquoi ne pas tout faire depuis excel.
Pour la mise en forme et pour la simplicité de ta macro, c'est bien
plus facile.

Une feuille qui sert de présentation (à l'image de ce que tu
ferais
dans word,
des champs mieux délimités ,Cellules)

Un ou deux index equiv et côté vba une petite boucle sur tes
enregistrements et le tour est joué.


Cordialement.

--
lSteph

On 19 août, 19:30, HORTENSE
wrote:
A priori, comme le dit CAP2, cette opération doit se faire à
partir d e Word.
Le publipostage est lancé à partir de Word...
Si le fichier Word, est "lié" au fichier adresse Excel, la
fusion est q uasi
automatique... !
A bientôt !





Bonjour Isteph et merci de t'intéresser à mon problème.
Ta solution semble idéale mais mes connaissances ne me permettent pas le paramétrage que tu décrits.
Je suis preneur du code si tu as.
Merci
Avatar
CAP2
Salut,

visiblement, c'est l'utilisation d'un modèle qui peut gêner...

Essaie de faire la même manip avec un fichier WORD qui soit enregistré en
.doc et pas en .dot

Comme ton fichier ne sert que de source au publipostage, c'est le résultat
de la fusion qui est modifié à chaque fois, pas la lettre-type. Tu n'as donc
pas forcément besoin d'un modèle en .dot

Ca donne quoi ?

CAP2

"vincerig" a écrit dans le message de news:

CAP2 a écrit le 20/08/2008 à 16h03 :
Reprenons,

tu as bien créé ta macro dans word pour faire le publipostage ?

Mettons qu'elle s'appelle "Publi".

Ensuite, tu fermes Word, et tu vas sur Excel, et tu fais la macro qui va
ouvrir word, ton doc de fusion, et qui va appeler la macro Publi.

Donc au moment où tu est sur excel et que tu lances la macro, tu ne dois
avoir qu'excel ouvert, puis la macro excel ouvre word et appelle la macro
word (Publi). Les deux logiciels sont ouverts et ça ne doit pas
coincer...

La macro Publi fait son boulot de publipostage et c'est fini...

Vérifie ta séquence et tiens-moi au courant !

CAP2


Alors je reprend : j'ai fait tout comme tu dis mais à l'ouverture de Word,
j'ai
un message d'alerte qui dit "impossible d'enregistrer ce fichier, il est
déja
ouvert dans un autre programme (c:Documents & Settings...Normal.dot).


1 2