OVH Cloud OVH Cloud

Automation de Word via Excel

10 réponses
Avatar
JièL Goubert
Salutatous

crosspost sur MPFE et MPFW.

pourriez vous m'aider avec une macro que je ne sais pas faire ? oui ?!
merci ;-)

Voila, j'ai une liste de données sous Excel, je fais des choix dans
celle ci afin de limiter les données à imprimer. Je voudrais ensuite
choisir dans une liste déroulante un nom de document word (ce doc est un
doc "type" dans lequel il existe une fusion avec la liste de données),
ouvrir ce doc dans word, fusionner vers un nouveau doc et fermer le doc
type.

C'est bien de l'automation, non ?

Améliorations futures : pouvoir faire ça avec une liste de fichier et
pouvoir enregistrer automatiquement avec un nom prédéfinis dans un
dossier dont le nom serait dans une cellule d'Excel.

Merci beaucoup aux macroteurs (une fois n'est pas coutume ;-D)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

10 réponses

Avatar
Kyrill
Salut JièL

peut etre une bonne base avec les notes suivantes
http://support.microsoft.com/kb/285332/en-us
http://support.microsoft.com/kb/289830/
http://support.microsoft.com/kb/220607/

--
Bonne journée,

Kyrill

"JièL Goubert" wrote in message
news:
Salutatous

crosspost sur MPFE et MPFW.

pourriez vous m'aider avec une macro que je ne sais pas faire ? oui ?!
merci ;-)

Voila, j'ai une liste de données sous Excel, je fais des choix dans
celle ci afin de limiter les données à imprimer. Je voudrais ensuite
choisir dans une liste déroulante un nom de document word (ce doc est un
doc "type" dans lequel il existe une fusion avec la liste de données),
ouvrir ce doc dans word, fusionner vers un nouveau doc et fermer le doc
type.

C'est bien de l'automation, non ?

Améliorations futures : pouvoir faire ça avec une liste de fichier et
pouvoir enregistrer automatiquement avec un nom prédéfinis dans un
dossier dont le nom serait dans une cellule d'Excel.

Merci beaucoup aux macroteurs (une fois n'est pas coutume ;-D)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr


Avatar
JpPradier
Bonjour JièL

Je te conseillerais ceci : http://minilien.com/?aLI26Sqr0e

;o)

j-p
Pas taper !
Avatar
JièL Goubert
Bonjoir© JpPradier

Le 08/02/2006 17:46 vous avez écrit... :
Bonjour JièL

Je te conseillerais ceci : http://minilien.com/?aLI26Sqr0e


...ce qui prouve que tu ne l'a pas lu, sinon tu saurais qu'il n'y est pas fait mention de programmation mais que par contre ça concerne tout ce qui est échange et liaison entre toutes les applis d'Office sans programmer afin d'éviter justement de créer des macros superfétatoire... mais bon, dommage, ça ne répond pas vraiment à ma question concernant la programmation de l'automation :-( (mais peut-être que tu ne sais pas toi non plus en fait :->)

Merci quand même pour la pub ;-)

Pas taper !


(ça c'est pas sur...) ;-)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

Avatar
JièL Goubert
Bonjoir© et merci beaucoup Kyrill,

je vais me documenter avec tout ça.

Je me pose quand même la question : t'es vraiment sur que c'est pas toi qui a écrit la KB ? ;-)))

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

Le 08/02/2006 16:04 vous avez écrit... :
Salut JièL

peut etre une bonne base avec les notes suivantes
http://support.microsoft.com/kb/285332/en-us
http://support.microsoft.com/kb/289830/
http://support.microsoft.com/kb/220607/

--
Bonne journée,

Kyrill


Avatar
JpPradier
"JièL Goubert" a écrit dans le message de news:
#
...ce qui prouve que tu ne l'a pas lu, sinon tu saurais qu'il n'y est pas fait mention
de programmation mais que par contre ça concerne tout ce qui est échange et liaison entre

toutes les applis d'Office >sans programmer afin d'éviter justement de créer des macros
superfétatoire... mais bon, dommage, ça ne répond pas vraiment à ma question concernant la
programmation de l'automation :-( (mais >peut-être que tu ne sais pas toi non plus en fait
:->)

Merci quand même pour la pub ;-)


Bonjour JièL

Je plaide coupable : je ne l'ai pas 'encore' lu vu que je n'utilise que mon marteau ;-))
Je me suis quand meme un peu penché sur le probleme mais n'étant pas fort dans le pilotage
de Word par Excel, je bute sur des détails.
d'abord que veux-tu dire par faire des choix dans la liste ?
Pour moi, il faut supprimer de la liste les données non choisies pour qu'à l'ouverture du
fichier Word la liste se mette à jour. C'est ça ?
Ensuite pour Ouvrir le fichier word et le fusionner dans un nouveau document, j'ai adapté
l'enregistreur de macro et ca donne ça :

Dim wrdApp
Sub openWord()
Dim wrdDoc
DocChoisi = "C:testtestfusion.doc"
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.documents.Open(DocChoisi)
wrdApp.Visible = True
With wrdDoc.MailMerge
.Destination = wdsendtonewdocument ' =0
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wddefaultfirstrecord ' 1
.LastRecord = wddefaultlastrecord '-16
End With
.Execute Pause:úlse
End With
End Sub

Le problème, c'est qu'excel ne comprend pas les 3 constantes Word ( wdsendtonewdocument ,
wddefaultfirstrecord , wddefaultlastrecord) et j'ai essayé avec wrdApp.wddefaultlastrecord
et d'autre et j'y arrrive pas.

Voila si ca peut t'avancer.

j-p

P.s : pour la pub tu sais ou envoyer la commission :-))

Avatar
Kyrill
Salut JièL

toujours dans la série on met les doigts dans les 'Grenages'
http://support.microsoft.com/kb/289830/EN-US/
http://support.microsoft.com/kb/285333/en-us

un exemple avec acces comme Application pilote
http://support.microsoft.com/kb/209882/en-us

Attente en ce qui concerne word et l'automation
http://support.microsoft.com/kb/825765/en-us

Et non je n'ai pas ecrit la KB disons juste qu'a chaque fois que j'y fais un
tour je prends mon costume de RdB 'Rat de Bibliothèque' :-)))))))

--
Bonne journée,

Kyrill

"JièL Goubert" wrote in message
news:#
Bonjoir© et merci beaucoup Kyrill,

je vais me documenter avec tout ça.

Je me pose quand même la question : t'es vraiment sur que c'est pas toi
qui a écrit la KB ? ;-)))


--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

Le 08/02/2006 16:04 vous avez écrit... :
Salut JièL

peut etre une bonne base avec les notes suivantes
http://support.microsoft.com/kb/285332/en-us
http://support.microsoft.com/kb/289830/
http://support.microsoft.com/kb/220607/

--
Bonne journée,

Kyrill




Avatar
Alain CROS
"JpPradier" a écrit dans le message de news:
|

Il faut remplacer les constantes par leur valeur ou disposer d'une référence à word.

Alain CROS

|
| Le problème, c'est qu'excel ne comprend pas les 3 constantes Word ( wdsendtonewdocument ,
| wddefaultfirstrecord , wddefaultlastrecord) et j'ai essayé avec wrdApp.wddefaultlastrecord
| et d'autre et j'y arrrive pas.
|
| Voila si ca peut t'avancer.
|
| j-p
|
| P.s : pour la pub tu sais ou envoyer la commission :-))
|
Avatar
JpPradier
Bonjour Alain

J'avais essayé ça aussi. Dans tous les cas, ça me renvoie Erreur 5852 "l'objet demandé
n'est pas disponible".
Le problème vient d'autre part. Pourtant mon code est similaire à l'exemple donné par
Kyrill (je l'ai peut-etre récupéré au meme endroit).

j-p
Avatar
JièL Goubert
Bonjoir© et mercitatous

avec votre aide j'ai pondu ceci... ça marche parfaitement, il faut juste
penser à cocher "Word" dans les références

-------------------------------------------------------
Function Publipostage()

Dim WdDoc As Word.Document
Dim Chemin, Fichier, Chemin_Fichier, Source As String

' Récupère le chemin des fichiers de la feuille "saisie"
' cellule "Chemin"
Chemin = Worksheets("Saisie").Range("Chemin")

' Récupère le nom du fichier de la feuille "saisie"
' cellule "Nom_Fichier"
' choisi dans une liste déroulante
Fichier = "" + Worksheets("Saisie").Range("Nom_Fichier")

Chemin_Fichier = Chemin + Fichier

Source = "Procedure.xls" ' a modifier pour que ce soit variable

' Démarrer Word en ouvrant la lettre type
Set WdDoc = GetObject(Chemin_Fichier, "Word.Document")

With WdDoc
' Masque Word
.Application.Visible = False

' Créé la liaison à la base de données afin de pouvoir
' déplacer facilement les fichiers.
' Source contient le chemin d'accés au fichier
.MailMerge.OpenDataSource _
Name:=Source, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
SQLStatement:="SELECT * FROM `Données_Mailing$`"

' Lancer la fusion du 1er et seul enreg vers un nouveau doc
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse
End With

' Affiche Word
.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 Function

------------------------------------------

Encore merci.

PS Perso à JP : Je le mettrais dans la prochaine version ;-)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr


Le 08/02/2006 15:26 vous avez écrit... :
Salutatous

crosspost sur MPFE et MPFW.

pourriez vous m'aider avec une macro que je ne sais pas faire ? oui ?!
merci ;-)

Voila, j'ai une liste de données sous Excel, je fais des choix dans
celle ci afin de limiter les données à imprimer. Je voudrais ensuite
choisir dans une liste déroulante un nom de document word (ce doc est un
doc "type" dans lequel il existe une fusion avec la liste de données),
ouvrir ce doc dans word, fusionner vers un nouveau doc et fermer le doc
type.

C'est bien de l'automation, non ?

Améliorations futures : pouvoir faire ça avec une liste de fichier et
pouvoir enregistrer automatiquement avec un nom prédéfinis dans un
dossier dont le nom serait dans une cellule d'Excel.

Merci beaucoup aux macroteurs (une fois n'est pas coutume ;-D)



Avatar
JpPradier
"JièL Goubert" a écrit dans le message de news:

Bonjoir© et mercitatous

Encore merci.

PS Perso à JP : Je le mettrais dans la prochaine version ;-)


Je serais obligé de l'acheter alors ;-))
Nonobstant, heureux que tu aies résolu ton problème.

A+

j-p