Problème publipostage Excel => Word

galaxy13

XLDnaute Nouveau
Bonjour,
Je vais essayer d'être clair pour ma demande...c'est pas gagné !
J'ai un fichier excel qui me sert de base de données pour un publipostage.
J'ai ensuite un document Word qui doit me servir pour un publipostage.
Je voudrais lancer le publipostage à partir d'un bouton et d'une macro dans Excel quand j'ai fini de remplir mes données. pour cela j'ai la macro :

Sub Ouvrir()
'
' Ouvrir Macro
'
Set appWrd = CreateObject("Word.Application")
appWrd.Visible = True
Set DocWord = appWrd.Documents.Add(Template:="D:\@Mes Docs\@@@Test\Mon document.docx ", NewTemplate:=False, DocumentType:=0)




'
End Sub



Mais quand cela s'exécute, je me retrouve toujours dans Word avec un document qui n'a pas pris le publipostage, et il faut à chaque fois que je refasse le choix de mon fichier excel pour pouvoir débuter la fusion...
N'y a-t-il pas un moyen de le forcer à prendre les données du fichier excel d'où l'on part.
C'est important, car c'est un publipostage qui doit être utilisé par plusieurs personnes...le fichier word sera commun à un emplacement fixe, et le fichier excel sera propre à chaque utilisateur..donc impossibilité de mettre en dur le chemin du fichier excel...
voilà, j'espère avoir été clair et j'espère ue quelqu'un aura une idée
Merci d'avance
 

BrunoM45

XLDnaute Barbatruc
Re : Problème publipostage Excel => Word

Bonjour Galaxy13,

Un code qui pourrait t'aider
VB:
Private Sub commandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application
Dim NomBase As String
 
NomBase = "C:\dossier\labase.xls"
 
Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = True
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:\leDocument.doc")
 
'fonctionnalité de publipostage pour le document spécifié
With docWord.mailMerge
'Ouvre la base de données
.OpenDataSource Name:= NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [Feuil1$]"
'Spécifie la fusion vers l'imprimante
.Destination = wdSendToPrinter
.suppressBlankLines = True
'Prend en compte l'ensemble des enregistrements
With .DataSource
.firstRecord = wdDefaultFirstRecord
.lastRecord = wdDefaultLastRecord
End With
'Exécute l'opération de publipostage
.Execute Pause:=False
End With
 
Application.ScreenUpdating = True
 
'Fermeture du document Word
docWord.Close False
appWord.Quit
End Sub

Par contre si tu lances la macro de ton fichier de données,
tu riques d'avoir des problèmes :confused:

A+
 

galaxy13

XLDnaute Nouveau
Re : Problème publipostage Excel => Word

Merci pour cette piste, mais le problème est que le fichier base de données excel n'est pas dans un endroit fixe, il va être distribué à plusieurs personnes, et chacun aura donc un chemin différent, seul le modèle word est dans un endroit fixe, car unique pour tout le monde...mais je vais continuer de creuser.

Par contre si j'active la référence "Microsoft Word xx.x Object Library dans mon classeur excel, est-ce que ce sera valable pour tous les autres ou devront-ils eux aussi activer cette fonction ?

Excusez-moi, mais je suis pas trop au top sur ce genre de trucs..
 

BrunoM45

XLDnaute Barbatruc
Re : Problème publipostage Excel => Word

re,

Merci pour cette piste, mais le problème est que le fichier base de données excel n'est pas dans un endroit fixe, il va être distribué à plusieurs personnes, et chacun aura donc un chemin différent, seul le modèle word est dans un endroit fixe, car unique pour tout le monde...mais je vais continuer de creuser.
Tu peux mettre le chemin d'accès dans une cellule d'une de tes feuilles et le récupérer via le code VBA

Par contre si j'active la référence "Microsoft Word xx.x Object Library dans mon classeur excel, est-ce que ce sera valable pour tous les autres ou devront-ils eux aussi activer cette fonction ?
Une fois la référence activée dans ton classeur, cela marchera pour tous les postes, à condition que ceux-ci est également Word

Excusez-moi, mais je suis pas trop au top sur ce genre de trucs..
No soucy, nous sommes là pour aider ;)
 

galaxy13

XLDnaute Nouveau
Re : Problème publipostage Excel => Word

Voilà, j'ai pu tester ce matin...ça marche :D

Solution d'enfer...merci beaucoup..

Puis je me permettre d'abuser ? :confused:

Je voudrais peaufiner cela avec deux trucs :

Est-il possible de valider par défaut le choix Annuler à la fin de l'éxécution dans Word...de manière à se trouver avec les lettres types affichées, sans la boîte de dialogue d fermeture (oui, non, annuler) et que le choix soit fait directement à Annuler ??

Et d'autre part est-il possible d'avoir plusieurs possibilités de document word, avec un choix qui serait fait directement dans Excel, et qui se traduirait dans la macro par un truc du genre :
Set docWord = appWord.Documents.Open("C:\Mes documents\Document choisi.doc"), où document choisi proviendrait de la cellule excel ?

Bon si j'en demande trop vous pouvez laisser tomber..
C'est juste pour faire un truc un peu plus classe, mais c'est déjà très bien avec ce que vous m'avez indiqué.

Merci d'avance
 

BrunoM45

XLDnaute Barbatruc
Re : Problème publipostage Excel => Word

Puis je me permettre d'abuser ? :confused:
Heuuu non, mais voyons quand même :rolleyes:

Est-il possible de valider par défaut le choix Annuler à la fin de l'éxécution dans Word...de manière à se trouver avec les lettres types affichées, sans la boîte de dialogue d fermeture (oui, non, annuler) et que le choix soit fait directement à Annuler ??
Il suffit de supprimer les 2 instructions de fin :confused::rolleyes:
C'est comme le port salut, c'est marqué dessus :cool:
VB:
'Fermeture du document Word[/COLOR]
docWord.Close False
appWord.Quit

Et d'autre part est-il possible d'avoir plusieurs possibilités de document word, avec un choix qui serait fait directement dans Excel, et qui se traduirait dans la macro par un truc du genre :
Set docWord = appWord.Documents.Open("C:\Mes documents\Document choisi.doc"), où document choisi proviendrait de la cellule excel ?
Heuu, ben c'est pareil
VB:
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:\leDocument.doc")
Il suffit de remplacer : "C:\leDocument.doc" par une variable

A+
 
Dernière édition:

galaxy13

XLDnaute Nouveau
Re : Problème publipostage Excel => Word

Bon je vais pas la faire style Jean Ferrat...

Que serai-je sans toi :D

Mais bon, là je crois que tous mes problèmes sont résolus, et je ne peux hélas que t'envoyer mille merci

C'est super de voir qu'il y a des gens comme toi sur les forums, surtout quand on est un peu ...comment dire .. neuneu dans la prog VBA...

@ +
 

LPandre

XLDnaute Impliqué
Re : Problème publipostage Excel => Word

Bonjour,
ayant le même souhait (Publipostage Excel => Word), j'ai copié le code de Bruno, j'ai activé Microsoft Word 11.0 Object Library dans les références du VBA, mais dès le lancement de la macro j'ai "Erreur de compilation" Sub ou Fonction non définie" qui s'affiche.

Qu'ai je manqué ?

Par avance merci.
 

LPandre

XLDnaute Impliqué
Re : Problème publipostage Excel => Word

Bonjour

Et qu'as-tu de surligné ?

Tu as été voir dans tes références si tu n'en as pas une de marquée manquante. Il suffit parfois de décochée celle marquée manquante pour résoudre le problème

Ce qui est surligné, c'est la première ligne : Sub Toto ()


"Tu as été voir dans tes références si tu n'en as pas une de marquée manquante"
?? Laquelle pourrait manquer ? J'ai de cochée : VBA, Excel, OLE, Office11 et Word 11. En faut il d'autres ?
 

LPandre

XLDnaute Impliqué
Re : Problème publipostage Excel => Word

Pas de souci Pascal : j'en suis au début du commencement.

Je ne peux pas te joindre le fichierWord , il semble que ça ne passe pas.
 

Pièces jointes

  • Base1.xls
    17 KB · Affichages: 213
  • Base1.xls
    17 KB · Affichages: 221
  • Base1.xls
    17 KB · Affichages: 218

Discussions similaires

Statistiques des forums

Discussions
299 702
Messages
1 978 588
Membres
206 297
dernier inscrit
ousssama