J'effectue un traitement sur Excel (par vba) pour obtenir une liste
coh=E9rente afin d'effectuer une fusion avec Word (2003) puis je lance
toujours =E0 partir d'excel la proc=E9dure suivante pour ex=E9cuter la
fusion :
Private Sub FusionWord()
Dim WordApp As Object
Set WordApp =3D CreateObject("Word.Application")
WordApp.Visible =3D True
WordApp.Documents.Open ("c:\temp\ficnom.doc")
WordApp.Documents("c:\temp\ficnom.doc").Saved =3D True
WordApp.Documents("c:\temp\ficnom.doc").Close
End Sub
Le document Word ficnom.doc est li=E9 au document ficnom.xls par OleDB.
Dans le document ficnom.doc, j'ai mis la macro suivante pour qu'elle
soit ex=E9cut=E9e =E0 l'ouverture du fichier :
Private Sub Document_Open()
Dim myMerge
Set myMerge =3D ActiveDocument.MailMerge
If myMerge.State =3D wdMainAndDataSource Then myMerge.Execute
End Sub
Lorsque je lance le traitement, ficnom.doc s'ouvre sans lancer la
fusion automatiquement.
Si j'ouvre directement le fichier ficnom, la fusion se lance.
En revanche, si je force la fusion avec la proc=E9dure suivante, cela
fonctionne parfaitement.
O=F9 ai-je commis une erreur, svp ?
Merci pour vos conseils,
Steph D.
'------------------
Private Sub Document_Open()
ActiveDocument.MailMerge.MainDocumentType =3D wdFormLetters
With ActiveDocument.MailMerge
.Destination =3D wdSendToNewDocument
.SuppressBlankLines =3D True
With .DataSource
.FirstRecord =3D wdDefaultFirstRecord
.LastRecord =3D wdDefaultLastRecord
End With
.Execute Pause:=3DFalse
End With
End Sub
'------------------
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anacoluthe
Bonjour !
'DesseJ' nous a écrit ...
Private Sub FusionWord() (...) WordApp.Documents.Open ("c:tempficnom.doc") WordApp.Documents("c:tempficnom.doc").Close (...) End Sub Private Sub Document_Open() (...) If myMerge.State = wdMainAndDataSource Then myMerge.Execute End Sub
Lorsque je lance le traitement, ficnom.doc s'ouvre sans lancer la fusion automatiquement.
Il est difficile de répondre sans voir le contexte du document principal mais je pense que dans votre Document_Open() l'objet myMerge est insuffisamment renseigné : imaginez ce que donne la fusion de l'enregistrement zéro à l'enregistrement zéro... Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans une macro Word avec le risque d'être asynchrone : il serait bien plus simple de placer l'ouverture de votre document, le lancement de la fusion et sa fermeture uniquement dans votre macro Excel ! Et donc sans aucune macro dans votre document principal Word...
Anacoluthe « Il est très difficile d'imaginer quelque chose de simple. » - Pierre MAC ORLAN
Bonjour !
'DesseJ' nous a écrit ...
Private Sub FusionWord()
(...) WordApp.Documents.Open ("c:tempficnom.doc")
WordApp.Documents("c:tempficnom.doc").Close (...)
End Sub
Private Sub Document_Open()
(...) If myMerge.State = wdMainAndDataSource Then myMerge.Execute
End Sub
Lorsque je lance le traitement, ficnom.doc s'ouvre sans lancer la
fusion automatiquement.
Il est difficile de répondre sans voir le contexte du document principal
mais je pense que dans votre Document_Open() l'objet myMerge est
insuffisamment renseigné : imaginez ce que donne la fusion de
l'enregistrement zéro à l'enregistrement zéro...
Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans
une macro Word avec le risque d'être asynchrone : il serait bien
plus simple de placer l'ouverture de votre document, le lancement
de la fusion et sa fermeture uniquement dans votre macro Excel !
Et donc sans aucune macro dans votre document principal Word...
Anacoluthe
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN
Private Sub FusionWord() (...) WordApp.Documents.Open ("c:tempficnom.doc") WordApp.Documents("c:tempficnom.doc").Close (...) End Sub Private Sub Document_Open() (...) If myMerge.State = wdMainAndDataSource Then myMerge.Execute End Sub
Lorsque je lance le traitement, ficnom.doc s'ouvre sans lancer la fusion automatiquement.
Il est difficile de répondre sans voir le contexte du document principal mais je pense que dans votre Document_Open() l'objet myMerge est insuffisamment renseigné : imaginez ce que donne la fusion de l'enregistrement zéro à l'enregistrement zéro... Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans une macro Word avec le risque d'être asynchrone : il serait bien plus simple de placer l'ouverture de votre document, le lancement de la fusion et sa fermeture uniquement dans votre macro Excel ! Et donc sans aucune macro dans votre document principal Word...
Anacoluthe « Il est très difficile d'imaginer quelque chose de simple. » - Pierre MAC ORLAN
DesseJ
Anacoluthe a répondu :
Bonjour ! Bonsoir
Il est difficile de répondre sans voir le contexte du document principal mais je pense que dans votre Document_Open() l'objet myMerge est insuffisamment renseigné : imaginez ce que donne la fusion de l'enregistrement zéro à l'enregistrement zéro... Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Oui, je le pense également, car dans ce cas, le document s'ouvre sans lancer la fusion. D'ailleurs, quand je regarde la barre d'outils "Fusion et Publipostage", celle-ci est inactive comme si le lien entre les deux fichiers Ficnom était perdu.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans une macro Word avec le risque d'être asynchrone : il serait bien plus simple de placer l'ouverture de votre document, le lancement de la fusion et sa fermeture uniquement dans votre macro Excel ! Et donc sans aucune macro dans votre document principal Word...
Je voulais tout placer initialement dans Excel, mais j'avais (très mal) lu et interprêté, après avoir farfouillé dans le newsgroup, un vos posts : "Avec un document principal déjà lié qui contient en AutoOpen un ActiveDocument.MailMerge.Execute il n'y a même pas besoin d'Automation : il suffit de mettre dans le fichier Excel un lien hypertexte vers ce document pour déclencher la fusion d'un clic depuis la feuille Excel ! Restons AMIS donc ;-) " Je voulais mixer le tout pour simplifier l'automation afin d'avoir une écriture de macro plus "élégante" en jouant sur le MailMerge.Execute d'un document déjà lié. Mais il est bien plus simple, comme vous le suggérez, soit de tout gérer au sein de la macro Excel, soit d'ajouter un lien hypertexte dans le classeur qui fait appel à ce document dans ce cas préalablement lié.
Merci de m'avoir éclairé Bonne soirée et journée Steph D.
« Il est très difficile d'imaginer quelque chose de simple. » - Pierre MAC ORLAN
Tellement vrai !
Anacoluthe a répondu :
Bonjour !
Bonsoir
Il est difficile de répondre sans voir le contexte du document principal
mais je pense que dans votre Document_Open() l'objet myMerge est
insuffisamment renseigné : imaginez ce que donne la fusion de
l'enregistrement zéro à l'enregistrement zéro...
Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Oui, je le pense également, car dans ce cas, le document s'ouvre sans
lancer la fusion. D'ailleurs, quand je regarde la barre d'outils
"Fusion et Publipostage", celle-ci est inactive comme si le lien entre
les deux fichiers Ficnom était perdu.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans
une macro Word avec le risque d'être asynchrone : il serait bien
plus simple de placer l'ouverture de votre document, le lancement
de la fusion et sa fermeture uniquement dans votre macro Excel !
Et donc sans aucune macro dans votre document principal Word...
Je voulais tout placer initialement dans Excel, mais j'avais (très
mal) lu et interprêté, après avoir farfouillé dans le newsgroup, un
vos posts :
"Avec un document principal déjà lié qui contient en AutoOpen un
ActiveDocument.MailMerge.Execute il n'y a même pas besoin
d'Automation : il suffit de mettre dans le fichier Excel un
lien hypertexte vers ce document pour déclencher la fusion
d'un clic depuis la feuille Excel ! Restons AMIS donc ;-) "
Je voulais mixer le tout pour simplifier l'automation afin d'avoir une
écriture de macro plus "élégante" en jouant sur le MailMerge.Execute
d'un document déjà lié. Mais il est bien plus simple, comme vous le
suggérez, soit de tout gérer au sein de la macro Excel, soit
d'ajouter un lien hypertexte dans le classeur qui fait appel à ce
document dans ce cas préalablement lié.
Merci de m'avoir éclairé
Bonne soirée et journée
Steph D.
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN
Il est difficile de répondre sans voir le contexte du document principal mais je pense que dans votre Document_Open() l'objet myMerge est insuffisamment renseigné : imaginez ce que donne la fusion de l'enregistrement zéro à l'enregistrement zéro... Ce n'est pas le cas dans votre deuxième Document_Open() qui marche.
Oui, je le pense également, car dans ce cas, le document s'ouvre sans lancer la fusion. D'ailleurs, quand je regarde la barre d'outils "Fusion et Publipostage", celle-ci est inactive comme si le lien entre les deux fichiers Ficnom était perdu.
Ceci dit je ne comprends pas pourquoi vous exécutez la fusion dans une macro Word avec le risque d'être asynchrone : il serait bien plus simple de placer l'ouverture de votre document, le lancement de la fusion et sa fermeture uniquement dans votre macro Excel ! Et donc sans aucune macro dans votre document principal Word...
Je voulais tout placer initialement dans Excel, mais j'avais (très mal) lu et interprêté, après avoir farfouillé dans le newsgroup, un vos posts : "Avec un document principal déjà lié qui contient en AutoOpen un ActiveDocument.MailMerge.Execute il n'y a même pas besoin d'Automation : il suffit de mettre dans le fichier Excel un lien hypertexte vers ce document pour déclencher la fusion d'un clic depuis la feuille Excel ! Restons AMIS donc ;-) " Je voulais mixer le tout pour simplifier l'automation afin d'avoir une écriture de macro plus "élégante" en jouant sur le MailMerge.Execute d'un document déjà lié. Mais il est bien plus simple, comme vous le suggérez, soit de tout gérer au sein de la macro Excel, soit d'ajouter un lien hypertexte dans le classeur qui fait appel à ce document dans ce cas préalablement lié.
Merci de m'avoir éclairé Bonne soirée et journée Steph D.
« Il est très difficile d'imaginer quelque chose de simple. » - Pierre MAC ORLAN