exécution automatique d'une macro lors de la fusion

Le
Wlad69
Bonjour,

Je travaille avec un progiciel qui réalise des fusions avec Word. Je
n'ai donc pas la main sur le lancement de la fusion.
Je ne peut agir que sur le contenu des modèles de documents lancés.
Je souhaite savoir si il est possible avec une macro AutoNew,
AutoOpen, AutoExec ou AutoJeSaisPasQuoi, de lancer automatiquement une
macro à la fin de la fusion.
Je pense par exemple à une macro qui remplacerait des champs
INCLUDETEXT par leur valeur.

Peut-être y a-t-il un autre moyen de lancer automatiquement une macro
dans le genre du champ MACROBUTTON ?

Je suis preneur de toutes les idées. Enfin, surtout les
bonnes ! ;-)

Cordialement,

Wlad69
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Anacoluthe
Le #1583076
Bonjour !

'Wlad69' nous a écrit ...
Je travaille avec un progiciel qui réalise des fusions avec Word. Je
n'ai donc pas la main sur le lancement de la fusion.
Je ne peut agir que sur le contenu des modèles de documents lancés.
Je souhaite savoir si il est possible avec une macro AutoNew,
AutoOpen, AutoExec ou AutoJeSaisPasQuoi, de lancer automatiquement une
macro à la fin de la fusion.


Dans votre document principal, placez une macro AutoOpen qui commence
par instancier un module de classe d'événement d'application Word.

' ---------------------------------------------------------------
' Dans ThisDocument :
Dim X As New EvenPublipostage
Public Sub AutoOpen()
Set X.wdApp = Word.Application
End Sub
' ---------------------------------------------------------------

Dans le module de classe nommé donc 'EvenPublipostage'
vous pouvez déclencher une macro sur l'événement 'après fusion' :

exemple :

' ---------------------------------------------------------------
' Module de classe EvenPublipostage :

Public WithEvents wdApp As Application

Private Sub wdApp_MailMergeAfterMerge _
(ByVal Doc As Document, ByVal DocResult As Document)

DocResult.Fields.Unlink

End Sub
' ---------------------------------------------------------------

Cette macro d'événement va 'déchamper' automatiquement en fin de fusion
tous les champs du document de fusion, et notamment les IncludeText
que vous souhaitiez voir remplacés par leur valeur.

C'est tout simple les événements, non ?

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK

Wlad69
Le #1583069
On 13 mar, 13:37, Anacoluthe
Bonjour !

'Wlad69' nous a écrit ...

Je travaille avec un progiciel qui réalise des fusions avec Word. Je
n'ai donc pas la main sur le lancement de la fusion.
Je ne peut agir que sur le contenu des modèles de documents lancés.
Je souhaite savoir si il est possible avec une macro AutoNew,
AutoOpen, AutoExec ou AutoJeSaisPasQuoi, de lancer automatiquement une
macro à la fin de la fusion.


Dans votre document principal, placez une macro AutoOpen qui commence
par instancier un module de classe d'événement d'application Word.

' ---------------------------------------------------------------
' Dans ThisDocument :
Dim X As New EvenPublipostage
Public Sub AutoOpen()
Set X.wdApp = Word.Application
End Sub
' ---------------------------------------------------------------

Dans le module de classe nommé donc 'EvenPublipostage'
vous pouvez déclencher une macro sur l'événement 'après fusion' :

exemple :

' ---------------------------------------------------------------
' Module de classe EvenPublipostage :

Public WithEvents wdApp As Application

Private Sub wdApp_MailMergeAfterMerge _
(ByVal Doc As Document, ByVal DocResult As Document)

DocResult.Fields.Unlink

End Sub
' ---------------------------------------------------------------

Cette macro d'événement va 'déchamper' automatiquement en fin de fu sion
tous les champs du document de fusion, et notamment les IncludeText
que vous souhaitiez voir remplacés par leur valeur.

C'est tout simple les événements, non ?

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK


WAHOU !
Super!
Tu m'as ouvert de nouvelles perspectives...
Suite à ton message; comme cela ne fonctionnait pas chez moi, j'ai
trouvé ces articles très intéressant :
http://www.microsoft.com/france/msdn/office/articles/20030716-wdappevnt.mspx
et
http://support.microsoft.com/kb/285333/fr

C'est d'ailleurs grâce à ces articles que j'ai compris pourquoi cela
ne fonctionne pas chez moi : j'ai Word 2000 sp3 !
Et la procédure d'événenment d'application MailMergeAfterMerge n'est
apparue qu'avec Word 2002.

Dommage.

Y-a-t'il une autre solution ? Mis à part changer de version de Word.


Anacoluthe
Le #1583063
Bonjour !

'Wlad69' nous a écrit ...
C'est d'ailleurs grâce à ces articles que j'ai compris pourquoi cela
ne fonctionne pas chez moi : j'ai Word 2000 sp3 !
Et la procédure d'événenment d'application MailMergeAfterMerge n'est
apparue qu'avec Word 2002.


Arrrgh pouvais pas deviner votre version Word :-p

Outre qu'il n'est pas très difficile de faire Ctrl+A et Ctrl+Maj+F9
un fois affiché le document de fusion, vous pouvez placer cette action
dans une macro. Si vous souhaitez que cette macro s'exécute
automatiquement en fin de fusion, il y a moyen d'y arriver
avec l'événement DocumentChange dans WD2000. C'est moins joli
qu'avec MailMergeAfterMerge de WD2002+

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK

JièL
Le #1583053
Hello

« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK


T'es sûr que c'est de lui ? c'est pas Paco par hasard ? ;-))))

JièL Pas co mais presque

Wlad69
Le #1583051
On 13 mar, 19:43, Anacoluthe
Bonjour !

'Wlad69' nous a écrit ...

C'est d'ailleurs grâce à ces articles que j'ai compris pourquoi cela
ne fonctionne pas chez moi : j'ai Word 2000 sp3 !
Et la procédure d'événenment d'application MailMergeAfterMerge n' est
apparue qu'avec Word 2002.


Arrrgh pouvais pas deviner votre version Word :-p

Outre qu'il n'est pas très difficile de faire Ctrl+A et Ctrl+Maj+F9
un fois affiché le document de fusion, vous pouvez placer cette action
dans une macro. Si vous souhaitez que cette macro s'exécute
automatiquement en fin de fusion, il y a moyen d'y arriver
avec l'événement DocumentChange dans WD2000. C'est moins joli
qu'avec MailMergeAfterMerge de WD2002+

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK
Merci beaucoup.

J'ai pas mal de chose à vérifier.
Je vais essayer de tester çà dans la journée. Je vous tiens au
courant.

Merci encore.


Wlad69
Le #1583046
On 13 mar, 19:43, Anacoluthe
Bonjour !

'Wlad69' nous a écrit ...

C'est d'ailleurs grâce à ces articles que j'ai compris pourquoi cela
ne fonctionne pas chez moi : j'ai Word 2000 sp3 !
Et la procédure d'événenment d'application MailMergeAfterMerge n' est
apparue qu'avec Word 2002.


Arrrgh pouvais pas deviner votre version Word :-p

Outre qu'il n'est pas très difficile de faire Ctrl+A et Ctrl+Maj+F9
un fois affiché le document de fusion, vous pouvez placer cette action
dans une macro. Si vous souhaitez que cette macro s'exécute
automatiquement en fin de fusion, il y a moyen d'y arriver
avec l'événement DocumentChange dans WD2000. C'est moins joli
qu'avec MailMergeAfterMerge de WD2002+

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK


Je peux me tromper... Mais j'ai l'impression que les seuls événements
qui soient disponibles sous Word 2000 sont :
Document_New
Document_Close
et
Document_Open

Je ne trouve pas Document_Change.
J'ai raté quelquechose ?


Anacoluthe
Le #1583038
Bonjour !

'Wlad69' nous a écrit ...
Je peux me tromper... Mais j'ai l'impression que les seuls événements
qui soient disponibles sous Word 2000 sont :
Document_New
Document_Close
et
Document_Open

Je ne trouve pas Document_Change.
J'ai raté quelquechose ?


Oui ce n'est pas Document_Change mais DocumentChange (nuance :-) )
donc de forme appWord_DocumentChange ou événement d'application !
Ceux que vous citez, les Document_... , sont des événements de document
plus faciles à utiliser sans instanciation.

Si je me souviens bien, WD2000 disposait déjà de DocumentChange

Anacoluthe
« La prédiction d'un événement a pour résultat
de faire arriver ce qu'elle a prédit. »
- Paul WATZLAWICK

Publicité
Poster une réponse
Anonyme