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

Piloter Word avec Excel (vba)

8 réponses
Avatar
Gen
Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait de
piloter word à partir d'excel. Précisément, je veux que la macro ouvre un
document word (déjà existant et situé à un endroit précis), jusque là ça va.
Une fois le document word ouvert, je veux que la macro exécute étape par
étape un publipostage en demandant les informations nécessaires pour préciser
la source des données etc. Une fois le publipostage terminé, je veux que la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word, mais
après, je suis bloquée.

Merci !

8 réponses

Avatar
papou
Bonjour
Si tu as ton document principal pour la fusion, enregistre une macro dans
Word et exécute la fusion.
Reviens ensuite sur le code VBA de Word pour le transposer dans Excel avec
la méthode que tu auras choisie.

Cordialement
Pascal

"Gen" a écrit dans le message de news:

Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait de
piloter word à partir d'excel. Précisément, je veux que la macro ouvre un
document word (déjà existant et situé à un endroit précis), jusque là ça
va.
Une fois le document word ouvert, je veux que la macro exécute étape par
étape un publipostage en demandant les informations nécessaires pour
préciser
la source des données etc. Une fois le publipostage terminé, je veux que
la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word, mais
après, je suis bloquée.

Merci !


Avatar
FFO
Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document Word et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait de
piloter word à partir d'excel. Précisément, je veux que la macro ouvre un
document word (déjà existant et situé à un endroit précis), jusque là ça va.
Une fois le document word ouvert, je veux que la macro exécute étape par
étape un publipostage en demandant les informations nécessaires pour préciser
la source des données etc. Une fois le publipostage terminé, je veux que la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word, mais
après, je suis bloquée.

Merci !


Avatar
papou
Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets :
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses et je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document Word et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait de
piloter word à partir d'excel. Précisément, je veux que la macro ouvre
un
document word (déjà existant et situé à un endroit précis), jusque là ça
va.
Une fois le document word ouvert, je veux que la macro exécute étape par
étape un publipostage en demandant les informations nécessaires pour
préciser
la source des données etc. Une fois le publipostage terminé, je veux que
la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word, mais
après, je suis bloquée.

Merci !




Avatar
FFO
Salut papou
Sympa de de m'apporter de précieux conseils
Si il n'est pas utile de déclarer
Dim WordApp As Word.Application
mais plutôt
Dim WordApp As Object
Dans la mesure où celà n'affecte pas le déroulement du code quel est
l'intérêt d'une écriture par rapport à une autre ???
Ce n'est qu'une déclaration pour une autre déclaration !!!!

Merci d'éclairer mes neurones


Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets :
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses et je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document Word et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait de
piloter word à partir d'excel. Précisément, je veux que la macro ouvre
un
document word (déjà existant et situé à un endroit précis), jusque là ça
va.
Une fois le document word ouvert, je veux que la macro exécute étape par
étape un publipostage en demandant les informations nécessaires pour
préciser
la source des données etc. Une fois le publipostage terminé, je veux que
la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word, mais
après, je suis bloquée.

Merci !









Avatar
papou
Re
L'intérêt est de ne pas avoir à utiliser de référence à la librairie de
Word.
Ceci afin d'assurer la portabilité du code sur toutes versions (Late
Binding).
Tu trouveras des infos supplémentaires ici (en anglais) :
http://peltiertech.com:80/Excel/EarlyLateBinding.html

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut papou
Sympa de de m'apporter de précieux conseils
Si il n'est pas utile de déclarer
Dim WordApp As Word.Application
mais plutôt
Dim WordApp As Object
Dans la mesure où celà n'affecte pas le déroulement du code quel est
l'intérêt d'une écriture par rapport à une autre ???
Ce n'est qu'une déclaration pour une autre déclaration !!!!

Merci d'éclairer mes neurones


Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets :
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses et
je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba
dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document Word
et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait
de
piloter word à partir d'excel. Précisément, je veux que la macro
ouvre
un
document word (déjà existant et situé à un endroit précis), jusque là
ça
va.
Une fois le document word ouvert, je veux que la macro exécute étape
par
étape un publipostage en demandant les informations nécessaires pour
préciser
la source des données etc. Une fois le publipostage terminé, je veux
que
la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques
pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word,
mais
après, je suis bloquée.

Merci !











Avatar
FFO
Re bonjour
Merci pour le tuyau
Le site doit certainement fourmiller de précieuses informations
Mais made in british it's too difficulte for me
Je ne comprends que la langue de Molière
Surtout pas celle de sheakspear
Dommage

Encore merci


Re
L'intérêt est de ne pas avoir à utiliser de référence à la librairie de
Word.
Ceci afin d'assurer la portabilité du code sur toutes versions (Late
Binding).
Tu trouveras des infos supplémentaires ici (en anglais) :
http://peltiertech.com:80/Excel/EarlyLateBinding.html

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut papou
Sympa de de m'apporter de précieux conseils
Si il n'est pas utile de déclarer
Dim WordApp As Word.Application
mais plutôt
Dim WordApp As Object
Dans la mesure où celà n'affecte pas le déroulement du code quel est
l'intérêt d'une écriture par rapport à une autre ???
Ce n'est qu'une déclaration pour une autre déclaration !!!!

Merci d'éclairer mes neurones


Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets :
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses et
je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba
dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document Word
et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me permettrait
de
piloter word à partir d'excel. Précisément, je veux que la macro
ouvre
un
document word (déjà existant et situé à un endroit précis), jusque là
ça
va.
Une fois le document word ouvert, je veux que la macro exécute étape
par
étape un publipostage en demandant les informations nécessaires pour
préciser
la source des données etc. Une fois le publipostage terminé, je veux
que
la
macro enregistre le document fusionné en demandant à l'utilisateur de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques
pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word,
mais
après, je suis bloquée.

Merci !
















Avatar
papou
Ben sinon il y a bien ça, mais ce n'est pas vraiment du Molière ;-)
http://support.microsoft.com/kb/245115/fr
J'ai aussi trouvé par là (attention au retour à la ligne intempestif) :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcn7/html/vaconearlylatebinding.asp

Cordialement
Pascal

"FFO" a écrit dans le message de news:

Re bonjour
Merci pour le tuyau
Le site doit certainement fourmiller de précieuses informations
Mais made in british it's too difficulte for me
Je ne comprends que la langue de Molière
Surtout pas celle de sheakspear
Dommage

Encore merci


Re
L'intérêt est de ne pas avoir à utiliser de référence à la librairie de
Word.
Ceci afin d'assurer la portabilité du code sur toutes versions (Late
Binding).
Tu trouveras des infos supplémentaires ici (en anglais) :
http://peltiertech.com:80/Excel/EarlyLateBinding.html

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut papou
Sympa de de m'apporter de précieux conseils
Si il n'est pas utile de déclarer
Dim WordApp As Word.Application
mais plutôt
Dim WordApp As Object
Dans la mesure où celà n'affecte pas le déroulement du code quel est
l'intérêt d'une écriture par rapport à une autre ???
Ce n'est qu'une déclaration pour une autre déclaration !!!!

Merci d'éclairer mes neurones


Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de
Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject
ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets
:
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses
et
je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba
dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document
Word
et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me
permettrait
de
piloter word à partir d'excel. Précisément, je veux que la macro
ouvre
un
document word (déjà existant et situé à un endroit précis), jusque

ça
va.
Une fois le document word ouvert, je veux que la macro exécute
étape
par
étape un publipostage en demandant les informations nécessaires
pour
préciser
la source des données etc. Une fois le publipostage terminé, je
veux
que
la
macro enregistre le document fusionné en demandant à l'utilisateur
de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques
pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur
ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word,
mais
après, je suis bloquée.

Merci !


















Avatar
Gen
Bonjour à vous deux,

Suite à vos commentaires et après quelques recherches additionnelles, j'en
suis venu à créer le code suivant qui semble fonctionner à une ou deux choses
près.

Sub test2()

Dim AppWord As Object
Dim Chemin, Fichier, Chemin_Fichier, Source As String
Sheets("Feuil1").Select
Source = ActiveWorkbook.Path & "" & ActiveWorkbook.Name


Set AppWord = CreateObject("Word.Application")
Set WdDoc = AppWord.Documents.Open("C:Document.doc")

With WdDoc
.Application.Visible = True
.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse
End With
.Application.Visible = True

' Ferme le doc ayant servi de modèle sans l'enregistrer
.Close (False)

End With

' Active Word
Application.ActivateMicrosoftApp xlMicrosoftWord

' Libère la mémoire
Set WdDoc = Nothing


End Sub

Je rencontre 1 problème. Le premier est à la ligne :

.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True

Là, je dois aller dans le fichier word et sélectionner la feuille où se
trouve les données, cependant, je voudrais que ça se fasse automatiquement.

Est-ce que quelqu'un peut m'aider avec ce problème ?

Merci !



Ben sinon il y a bien ça, mais ce n'est pas vraiment du Molière ;-)
http://support.microsoft.com/kb/245115/fr
J'ai aussi trouvé par là (attention au retour à la ligne intempestif) :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcn7/html/vaconearlylatebinding.asp

Cordialement
Pascal

"FFO" a écrit dans le message de news:

Re bonjour
Merci pour le tuyau
Le site doit certainement fourmiller de précieuses informations
Mais made in british it's too difficulte for me
Je ne comprends que la langue de Molière
Surtout pas celle de sheakspear
Dommage

Encore merci


Re
L'intérêt est de ne pas avoir à utiliser de référence à la librairie de
Word.
Ceci afin d'assurer la portabilité du code sur toutes versions (Late
Binding).
Tu trouveras des infos supplémentaires ici (en anglais) :
http://peltiertech.com:80/Excel/EarlyLateBinding.html

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut papou
Sympa de de m'apporter de précieux conseils
Si il n'est pas utile de déclarer
Dim WordApp As Word.Application
mais plutôt
Dim WordApp As Object
Dans la mesure où celà n'affecte pas le déroulement du code quel est
l'intérêt d'une écriture par rapport à une autre ???
Ce n'est qu'une déclaration pour une autre déclaration !!!!

Merci d'éclairer mes neurones


Bonjour
Si je peux me permettre une petite remarque :
Il n'est pas utile de déclarer WordApp en utilisant la librairie de
Word
(Dim WordApp As Word.Application) dans le cas de la méthode GetObject
ou
CreateObject qui est utilisée dans le code exemple que tu as fourni.
Dans ce cas il suffit de déclarer WordApp et WordDoc en tant qu'objets
:
Dim WordApp As Object
Dim WordDoc As Object

C'est Denis qui me l'avait rappelé à l'occasion d'une de mes réponses
et
je
pense qu'il faisait bien de le faire.

Cordialement
Pascal


"FFO" a écrit dans le message de news:

Salut Gen
Dans le même esprit que ton post "Copier Coller un graphique en vba
dans
Excel" auquel j'ai répondu (j'espère que tu as été satisfait)
Je te propose ce début de code :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("E:CheminDocument.doc")
With WordDoc

.Instructions
.instruction
.Etc...
.SaveAs ("C:CheminDocument.doc")
End With

A toi de mettre les instructions
Tu ne m'as pas assez donné d'éléments pour te les proposer
Tu peux les réaliser avec l'enregistreur de Macro dans le Document
Word
et
lancer cette Macro en mettant ci-dessus comme instruction :

.Application.Run ("Mamacro")

Espérant que celà te convienne


Bonjour à tous,

Voici mon problème, je veux créer une macro en vba qui me
permettrait
de
piloter word à partir d'excel. Précisément, je veux que la macro
ouvre
un
document word (déjà existant et situé à un endroit précis), jusque

ça
va.
Une fois le document word ouvert, je veux que la macro exécute
étape
par
étape un publipostage en demandant les informations nécessaires
pour
préciser
la source des données etc. Une fois le publipostage terminé, je
veux
que
la
macro enregistre le document fusionné en demandant à l'utilisateur
de
préciser l'emplacement et le nom de ce nouveau document.

Est-ce que c'est possible ? Si oui, j'aurais besoin de quelques
pistes.
J'ai déjà consulté beaucoup des questions et réponses figurant sur
ce
furum,
mais je suis toujours bloqué. J'arrive à ouvrir le document word,
mais
après, je suis bloquée.

Merci !