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

Fusion et VBA

8 réponses
Avatar
Gen
Bonjour, il y a quelques mois, j'ai posé la question suivante:

Bonjour !

> J'ai un document relié à un fichier excel prêt pour effectuer la fusion des
> champs. Manuellement, je sais comment faire. Cependant, j'aimerais créer
> une macro en vba qui permettrait à l'utilisateur d'effectuer la fusion
> automatiquement à l'aide de la macro. Est-ce possible ?

La macro peut être réalisée dans Word ou dans Excel.
Toutes les subtilités du publipostage (ouverture d'une source, requête sur
les données, destination de la fusion etc.) sont programmables.
Le plus simple pour commencer est d'enregistrer /votre/ procédure de
fusion avec l'enregistreur de macro...

Anacoluthe
« L'automatisation : système simplifiant tellement le travail
qu'on finira par avoir besoin d'un cerveau électronique
pour se tourner les pouces. »
- Benjamin SUBAC

Malheureusement, la réponse ne m'a pas aidé puisque l'enregistreur ne semble
pas enregistrer ce type d'opération.

Est-ce que quelqu'un peut m'aider ?

Merci !

8 réponses

Avatar
Geo

Bonjour, il y a quelques mois, j'ai posé la question suivante:
J'ai un document relié à un fichier excel prêt pour effectuer la fusion des
champs. Manuellement, je sais comment faire. Cependant, j'aimerais créer
une macro en vba qui permettrait à l'utilisateur d'effectuer la fusion
automatiquement à l'aide de la macro. Est-ce possible ?


La macro peut être réalisée dans Word ou dans Excel.
Toutes les subtilités du publipostage (ouverture d'une source, requête sur
les données, destination de la fusion etc.) sont programmables.
Le plus simple pour commencer est d'enregistrer /votre/ procédure de
fusion avec l'enregistreur de macro...


Malheureusement, la réponse ne m'a pas aidé puisque l'enregistreur ne semble
pas enregistrer ce type d'opération.

Est-ce que quelqu'un peut m'aider ?


La fusion elle-même n'est pas très compliquée à faire :

Dim Fusion As MailMerge
Dim CourrierType As Document
.......
' Définition de la source pour la fusion document (tableau) word ou
feuille Excel
CourrierType.MailMerge.OpenDataSource xxxxxxxx
Set Fusion = CourrierType.MailMerge
With Fusion
' pour imprimer directement activer la ligne ci-dessous
' .Destination = wdSendToPrinter
.Execute
End With
CourrierType.Close savechanges:úlse
MsgBox " Les courriers sont disponibles"

--
A+



Avatar
Gen
Bonjour Geo,

Merci de votre réponse, cependant, j'ai le message d'erreur suivant et je ne
comprend pas: Erreur d'exécution '91: Variable objet ou variable de bloc With
non definie

Est-ce que vous en voyez la raison ?

Merci !



Bonjour, il y a quelques mois, j'ai posé la question suivante:
J'ai un document relié à un fichier excel prêt pour effectuer la fusion des
champs. Manuellement, je sais comment faire. Cependant, j'aimerais créer
une macro en vba qui permettrait à l'utilisateur d'effectuer la fusion
automatiquement à l'aide de la macro. Est-ce possible ?


La macro peut être réalisée dans Word ou dans Excel.
Toutes les subtilités du publipostage (ouverture d'une source, requête sur
les données, destination de la fusion etc.) sont programmables.
Le plus simple pour commencer est d'enregistrer /votre/ procédure de
fusion avec l'enregistreur de macro...


Malheureusement, la réponse ne m'a pas aidé puisque l'enregistreur ne semble
pas enregistrer ce type d'opération.

Est-ce que quelqu'un peut m'aider ?


La fusion elle-même n'est pas très compliquée à faire :

Dim Fusion As MailMerge
Dim CourrierType As Document
........
' Définition de la source pour la fusion document (tableau) word ou
feuille Excel
CourrierType.MailMerge.OpenDataSource xxxxxxxx
Set Fusion = CourrierType.MailMerge
With Fusion
' pour imprimer directement activer la ligne ci-dessous
' .Destination = wdSendToPrinter
.Execute
End With
CourrierType.Close savechanges:úlse
MsgBox " Les courriers sont disponibles"

--
A+








Avatar
Geo

Merci de votre réponse, cependant, j'ai le message d'erreur suivant et je ne
comprend pas: Erreur d'exécution '91: Variable objet ou variable de bloc With
non definie

Est-ce que vous en voyez la raison ?


Ma boule de cristal étant en révision, pouvez-vous indiquer votre code
et la ligne qui pose problème ?

--
A+

Avatar
Gen
Bonjour,

Voici la ligne qui semble créer problème:

CourrierType.MailMerge.OpenDataSource Name:="C:DocFusion - Communiqué.xls"

Merci !



Merci de votre réponse, cependant, j'ai le message d'erreur suivant et je ne
comprend pas: Erreur d'exécution '91: Variable objet ou variable de bloc With
non definie

Est-ce que vous en voyez la raison ?


Ma boule de cristal étant en révision, pouvez-vous indiquer votre code
et la ligne qui pose problème ?

--
A+






Avatar
Geo

Bonjour,

Voici la ligne qui semble créer problème:

CourrierType.MailMerge.OpenDataSource Name:="C:DocFusion - Communiqué.xls"


Vous avez bien fait avant :
Set CourrierType = Documents.Add(basé sur le modèle de courrier) ?

--
A+

Avatar
Anacoluthe
Bonjour !

'Gen' nous a écrit ...
Voici la ligne qui semble créer problème:
CourrierType.MailMerge.OpenDataSource Name:="C:DocFusion - Communiqué.xls"


CourrierType n'a pas été défini tout simplement !!!
C'est un objet document
Geo ne l'a pas défini car nous ne savons pas où vous cherchez ce document !
On a parlé d'un document ouvert ou crée par Excel par exemple
Si la macro est lancée dans Word depuis le document lui-même il suffit d'écrire
Set CourrierType = ActiveDocument
avant d'utiliser le code qui en fait mention....
Les bases, les bases d'abord :-)

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD

Avatar
Gen
Bonjour à vous deux,

Merci pour votre aide !

J'aurais une autre petite question, est-il possible lde faire le chemin
inverse, à savoir à partir d'une macro en excel fusionner les données de ce
fichier dans un document word contenant les champs de fusion désirés ? Ce
serait plus facile pour moi ainsi !

Merci encore !



Bonjour !

'Gen' nous a écrit ...
Voici la ligne qui semble créer problème:
CourrierType.MailMerge.OpenDataSource Name:="C:DocFusion - Communiqué.xls"


CourrierType n'a pas été défini tout simplement !!!
C'est un objet document
Geo ne l'a pas défini car nous ne savons pas où vous cherchez ce document !
On a parlé d'un document ouvert ou crée par Excel par exemple
Si la macro est lancée dans Word depuis le document lui-même il suffit d'écrire
Set CourrierType = ActiveDocument
avant d'utiliser le code qui en fait mention....
Les bases, les bases d'abord :-)

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD




Avatar
Geo

J'aurais une autre petite question, est-il possible de faire le chemin
inverse, à savoir à partir d'une macro en excel fusionner les données de ce
fichier dans un document word contenant les champs de fusion désirés ? Ce
serait plus facile pour moi ainsi !


Si vous savez le faire dans Word, vous pouvez le faire à partir
d'Excel.
Le terme technique c'est "piloter Word" à partir d'Excel, vous
trouverez des exemples sur ce forum, sur celui d'Excel ou sur
différents sites.
pensez à référencer Word dans le vba Excel.

--
A+