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 ?
> 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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Daniel
> 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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par
macro depuis 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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Daniel
gup
Daniel.C wrote:
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou j'ouvre le document word, il se rouvre tout seul.
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca sort directement à l'imprimante.
Daniel.C wrote:
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou
j'ouvre le document word, il se rouvre tout seul.
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par
macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca
sort directement à l'imprimante.
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou j'ouvre le document word, il se rouvre tout seul.
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca sort directement à l'imprimante.
Daniel.C
> Daniel.C wrote:
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou j'ouvre le document word, il se rouvre tout seul.
Je ne suis pas sûr de comprendre...
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca sort directement à l'imprimante.
Peux-tu poster le code de la macro Word ?
Daniel
> Daniel.C wrote:
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou
j'ouvre le document word, il se rouvre tout seul.
Je ne suis pas sûr de comprendre...
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par
macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca sort
directement à l'imprimante.
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 ?
Pourquoi le fermes-tu si tu dois le rouvrir ?
Je l'ouvre depuis excel, pour le remplir, puis le referme. Au moment ou j'ouvre le document word, il se rouvre tout seul.
Je ne suis pas sûr de comprendre...
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 ?
Y a-t-il une différence quand tu lances la fusion manuellement ? Ou par macro depuis Word ?
Lorsque je lance la macro word depuis word, tout est très rapide, ca sort directement à l'imprimante.
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 ActiveWindow.Close
Bonjour.
Visiblement, c'est la liaison Excel/Word qui ralentit l'exécution. Je te propose pour commencer d'essayer de ne pas fermer le document Word dans la première macro. J'ai modifié le code de la macro postée par michdenis pour prendre en compte cette modification :
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 = GetObject(, "Word.Application") Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then Set Dc = Wd.Documents(Fichier) Dc.Activate Else MsgBox "Fichier introuvable" Exit Sub End If
Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
Si tu es d'accord, j'essaierai de trouver un moyen de démarrer le publipostage une fois la liaison Excel/Word interrompue. Une autre approche serait d'exécuter la macro Word au démarrage du document. Daniel
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:úlse,
PrintZoomColumn:=0, _
PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
ActiveWindow.Close
Bonjour.
Visiblement, c'est la liaison Excel/Word qui ralentit l'exécution. Je
te propose pour commencer d'essayer de ne pas fermer le document Word
dans la première macro. J'ai modifié le code de la macro postée par
michdenis pour prendre en compte cette modification :
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 = GetObject(, "Word.Application")
Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then
Set Dc = Wd.Documents(Fichier)
Dc.Activate
Else
MsgBox "Fichier introuvable"
Exit Sub
End If
Dc.Close False
Wd.Quit
Set Dc = Nothing: Set Wd = Nothing
End Sub
Si tu es d'accord, j'essaierai de trouver un moyen de démarrer le
publipostage une fois la liaison Excel/Word interrompue.
Une autre approche serait d'exécuter la macro Word au démarrage du
document.
Daniel
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 ActiveWindow.Close
Bonjour.
Visiblement, c'est la liaison Excel/Word qui ralentit l'exécution. Je te propose pour commencer d'essayer de ne pas fermer le document Word dans la première macro. J'ai modifié le code de la macro postée par michdenis pour prendre en compte cette modification :
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 = GetObject(, "Word.Application") Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then Set Dc = Wd.Documents(Fichier) Dc.Activate Else MsgBox "Fichier introuvable" Exit Sub End If
Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
Si tu es d'accord, j'essaierai de trouver un moyen de démarrer le publipostage une fois la liaison Excel/Word interrompue. Une autre approche serait d'exécuter la macro Word au démarrage du document. Daniel
Daniel.C
Essaie également - je ne peux pas le tester - le document Word étant ouvert :
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 = GetObject(, "Word.Application") Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then Set Dc = Wd.Documents(Fichier) Dc.Activate Else MsgBox "Fichier introuvable" Exit Sub End If
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 Wd.ActiveWindow.Close Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:úlse,
PrintZoomColumn:=0, _
PrintZoomRow:=0, PrintZoomPaperWidth:=0,
PrintZoomPaperHeight:=0
Wd.ActiveWindow.Close
Dc.Close False
Wd.Quit
Set Dc = Nothing: Set Wd = Nothing
End Sub
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 Wd.ActiveWindow.Close Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
> 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"
Il faut ici avoir toujours une fenetre word ouverte. Ceci n'est pas génant.
Set Wd = GetObject(, "Word.Application")
Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then
Ici, l'instruction sans Open ne fonctionne pas chez moi. Mauvais paramètre, même si je rajoute le chemin.
Set Dc = Wd.Documents(Fichier) Dc.Activate Else MsgBox "Fichier introuvable" Exit Sub End If
MaMacro = "'" & Fichier & "'!publi"
Le chargement du fichier source du publipostage est très long.
Wd.Run MaMacro
Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
Si tu es d'accord, j'essaierai de trouver un moyen de démarrer le publipostage une fois la liaison Excel/Word interrompue.
Pas de souci. Je suis d'accord pour tout essayer. Merci à toi de m'aider.
Une autre approche serait d'exécuter la macro Word au démarrage du document.
J'essaie ca.
gup
En mettant la macro word à l'ouverture du document, si j'ouvre manuellement le document, pas de souci, très rapide. Si j'ouvre avec ma macro Excel, même résultat, très long.
En mettant la macro word à l'ouverture du document, si j'ouvre
manuellement le document, pas de souci, très rapide. Si j'ouvre avec ma
macro Excel, même résultat, très long.
En mettant la macro word à l'ouverture du document, si j'ouvre manuellement le document, pas de souci, très rapide. Si j'ouvre avec ma macro Excel, même résultat, très long.
gup
Daniel.C wrote:
Essaie également - je ne peux pas le tester - le document Word étant ouvert :
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 = GetObject(, "Word.Application") Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then Set Dc = Wd.Documents(Fichier) Dc.Activate Else MsgBox "Fichier introuvable" Exit Sub End If
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 Wd.ActiveWindow.Close Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
Daniel
J'ai déjà essayé de mettre le contenu de la macro word dans la macro Excel, mais sans succès, le même résultat.
Daniel.C wrote:
Essaie également - je ne peux pas le tester - le document Word étant
ouvert :
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 = GetObject(, "Word.Application")
Wd.Visible = True
If Dir(Chemin & Fichier) <> "" Then
Set Dc = Wd.Documents(Fichier)
Dc.Activate
Else
MsgBox "Fichier introuvable"
Exit Sub
End If
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:úlse,
PrintZoomColumn:=0, _
PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
Wd.ActiveWindow.Close
Dc.Close False
Wd.Quit
Set Dc = Nothing: Set Wd = Nothing
End Sub
Daniel
J'ai déjà essayé de mettre le contenu de la macro word dans la macro
Excel, mais sans succès, le même résultat.
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Wd.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:úlse, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 Wd.ActiveWindow.Close Dc.Close False Wd.Quit Set Dc = Nothing: Set Wd = Nothing End Sub
Daniel
J'ai déjà essayé de mettre le contenu de la macro word dans la macro Excel, mais sans succès, le même résultat.
Daniel.C
> Ici, l'instruction sans Open ne fonctionne pas chez moi. Mauvais paramètre, même si je rajoute le chemin.
Set Dc = Wd.Documents(Fichier) Dc.Activate
La macro suppose que le document Word est ouvert. J'avais cru comprendre qu'il était fermé par une précédente macro et je te proposais de ne pas le fermer.
Le chargement du fichier source du publipostage est très long.
On est d'accord, ici, rien de changé au niveau du publipostage.
Daniel
> Ici, l'instruction sans Open ne fonctionne pas chez moi. Mauvais paramètre,
même si je rajoute le chemin.
Set Dc = Wd.Documents(Fichier)
Dc.Activate
La macro suppose que le document Word est ouvert. J'avais cru
comprendre qu'il était fermé par une précédente macro et je te
proposais de ne pas le fermer.
Le chargement du fichier source du publipostage est très long.
On est d'accord, ici, rien de changé au niveau du publipostage.
> Ici, l'instruction sans Open ne fonctionne pas chez moi. Mauvais paramètre, même si je rajoute le chemin.
Set Dc = Wd.Documents(Fichier) Dc.Activate
La macro suppose que le document Word est ouvert. J'avais cru comprendre qu'il était fermé par une précédente macro et je te proposais de ne pas le fermer.
Le chargement du fichier source du publipostage est très long.
On est d'accord, ici, rien de changé au niveau du publipostage.