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

macro publipostage

22 réponses
Avatar
gup
Bonjour,

Dans un fichier excel, j'ai plusieurs zone nommées. Ces zones servent de
source pour des publipostage de document word. Les documents word
possèdent déjà les champs de fusion, ainsi que la source de données.
Dans le fichier Excel, je souhaite en cliquant sur un bouton, lancer
automatiquement la fusion du document word vers l'imprimante.
Lorsque j'ouvre manuellement le document word, et que je lance la
fusion, tout marche.

Lorsque je clique sur mon bouton depuis le fichier excel, word s'ouvre,
mais la fusion du document ne se fait pas, tout est très long, et fini
par bloquer.

Je suis sous Office 2000.

Quelqu'un pourrait m'expliquer comment faire ceci s'il vous plait ?

Cordialement

10 réponses

1 2 3
Avatar
michdenis
Bonjour,

Évidemment, ce code n'a pas été testé.
J'ai aussi supposé que ton document contenant
la macro de publipostage n'était pas déjà ouvert.

'------------------------------------
Sub Test()
Dim Wd as object
dim Dc as object
dim MaMacro as String
Dim MonDocument as string

'le fichier contenant la macro Word
MonDocument = "c:Chemin & NomDuFichier.doc

Set Wd = createobject("Word.Application")
Wd.visible = true

set Dc = Wd.Documents.Open("Chemin & NomDuFichier.doc)

'En supposant que ta macro est dans un MODULE STANDARD de
'ton document Word, tu lances la macro "NomDeLaMacro" que tu
'dois remplacer par son vrai nom.

MaMacro = "'" & ThisDocument.Name & "'!NomDeLaMacro"
Application.Run MaMacro

Dc.Close false
Wd.Quit
Set Dc = Nothing:Set Wd=Nothing
End Sub
'------------------------------------




"gup" a écrit dans le message de groupe de discussion :
e$
Bonjour,

Dans un fichier excel, j'ai plusieurs zone nommées. Ces zones servent de
source pour des publipostage de document word. Les documents word
possèdent déjà les champs de fusion, ainsi que la source de données.
Dans le fichier Excel, je souhaite en cliquant sur un bouton, lancer
automatiquement la fusion du document word vers l'imprimante.
Lorsque j'ouvre manuellement le document word, et que je lance la
fusion, tout marche.

Lorsque je clique sur mon bouton depuis le fichier excel, word s'ouvre,
mais la fusion du document ne se fait pas, tout est très long, et fini
par bloquer.

Je suis sous Office 2000.

Quelqu'un pourrait m'expliquer comment faire ceci s'il vous plait ?

Cordialement
Avatar
gup
Word s'ouvre, mais le fichier word est très long à s'ouvrir.

set Dc = Wd.Documents.Open("Chemin & NomDuFichier.doc)




Comment peut-on corriger cela s'il vous plait ?

Cordialement
Avatar
gup
Le publipostage ne se lance pas.

Cordialement
Avatar
michdenis
| set Dc = Wd.Documents.Open("Chemin & NomDuFichier.doc)
| Comment peut-on corriger cela s'il vous plait ?

Dans la lprocédure, il y a une variable :

'le fichier contenant la macro Word
'à toi de définir le chemin et le nom du fichier
MonDocument = "c:Chemin & NomDuFichier.doc

Et dans la procédure, tu utilises la variable :

set Dc = Wd.Documents.Open(MonDocument)
Avatar
michdenis
| Le publipostage ne se lance pas.

Avec ce type de commentaire, Tu voudrais que je devine
ce qui se passe lorsque tu lances la macro ?
Avatar
gup
Voici le code que j'ai testé :


Sub Test()
Dim Wd As Object
Dim Dc As Object
Dim MaMacro As String
Dim MonDocument As String

MonDocument = "G:Convocation.doc"

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

Set Dc = Wd.Documents.Open(MonDocument)


MaMacro = "'" & MonDocument & "'!publi"
Application.Run MaMacro

Dc.Close False
Wd.Quit
Set Dc = Nothing: Set Wd = Nothing


End Sub
Avatar
michdenis
Et la macro bloque où ?

Exécute là pas à pas en utilisant la touche F8.
Note la ligne de code qui cause problème.

J'ai modifié légèrement le code de la macro.
'----------------------------------
Sub Test()
Dim Wd As Object
Dim Dc As Object
Dim MaMacro As String
Dim Chemin As String
Dim Fichier As String

Chemin = "G:"
Fichier = "Convocation.doc"

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

If Dir(chemin & fichier) <>"" then
Set Dc = Wd.Documents.Open(Chemin & Fichier)
else
Msgbox "Fichier introuvable"
exit sub
End if

MaMacro = "'" & Fichier & "'!publi"
Application.Run MaMacro

Dc.Close False
Wd.Quit
Set Dc = Nothing: Set Wd = Nothing
End Sub
'----------------------------------
Avatar
gup
> Set Dc = Wd.Documents.Open(Chemin & Fichier)



L'ouverture du fichier word est très longue, de l'ordre d'une minute. Il
ouvre avec la source de données.


Ce code génére une erreur : fichier introuvable.

MaMacro = "'" & Fichier & "'!publi"
Application.Run MaMacro



Je l'ai modifié par

> MaMacro = "'" & chemin & Fichier & "'!publi"
> Application.Run MaMacro


Là, plus d'erreur fichier introuvable, mais une erreur format de fichier
non valide.

Je précise que la macro word, lancé depuis word manuellement fonctionne
sans problème.

Merci
Avatar
Daniel.C
Bonjour.

Peut-être :

Wd.Run MaMacro

Daniel

> Set Dc = Wd.Documents.Open(Chemin & Fichier)

L'ouverture du fichier word est très longue, de l'ordre d'une minute. Il
ouvre avec la source de données.


Ce code génére une erreur : fichier introuvable.

MaMacro = "'" & Fichier & "'!publi"
Application.Run MaMacro



Je l'ai modifié par

> MaMacro = "'" & chemin & Fichier & "'!publi"
> Application.Run MaMacro


Là, plus d'erreur fichier introuvable, mais une erreur format de fichier non
valide.

Je précise que la macro word, lancé depuis word manuellement fonctionne sans
problème.

Merci


Avatar
gup
>
Wd.Run MaMacro




C'est effectivement ca. Merci beaucoup. J'y suis presque : depuis mon
fichier excel, lorsque je clic sur le bouton, voici ce qui est fait :

- Ouverture du classeur source du publipostage
- Remplissage des informations
- Fermeture du classeur de publipostage
- Ouverture de Word
- Ouverture du document à fusionner
- Lancement de la macro word :
* Lancer la fusion vers l'imprimante
- Fermeture du document fusionné sans enregistrer
- Fermeture du document source sans enregistrer
- Fermeture de Word

Si le fichier word est long à s'ouvrir (environ 1 minute), c'est parce
que je l'ouvre dans ma macro avant, et qu'il ne doit pas être fini de
fermer (vérifié en commentant la partie avant l'ouverture de word).
Comment puis-je attendre la fermeture complète du classeur source de
publipostage et démarrer seulement après l'ouverture du document word
s'il vous plait ?

Le lancement de la fusion vers l'imprimante est très long (de l'ordre
d'une minute). De quoi cela pourrait-il venir s'il vous plait ?


Je vous remercie pour votre aide.

Cordialement
1 2 3