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

Mise à jour publipostage depuis XL

5 réponses
Avatar
Jac
Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls qui
ne contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de Variables.xls
pour les fusionner avec OLE DB. Ça fonctionne parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word =============
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les variables du
fichier XL. Le fichier revient toujours avec des anciennes données. Je pense
qu'il faudrait une mise à jour mais je ne vois pas comment la rajouter.

Merci d'avance à qui me mettra sur la voie.

Jac

5 réponses

Avatar
JLuc
*Bonjour Jac*,
J'ai fais un petit essai sous word en créant une macro. Ca donne ceci :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Donc je pense que dans ton bloc With, il ne faut pas imprimer
directement, mais ajouter ce code en le modifiant un peu (je fusionne
dans un document)
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT)
With .Documents.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

Dis nous si çà te conviens


Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls qui ne
contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de Variables.xls
pour les fusionner avec OLE DB. Ça fonctionne parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word ============ > With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les variables du
fichier XL. Le fichier revient toujours avec des anciennes données. Je pense
qu'il faudrait une mise à jour mais je ne vois pas comment la rajouter.

Merci d'avance à qui me mettra sur la voie.

Jac


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Jac
Bonjour Jean-Luc,
ta solution ne fonctionne pas... J'obtiens une erreur '438' Propriété non
gérée par cet objet dès que j'arrive sur
With .Documents.MailMerge

J'ai revu ma copie et remarqué que lorsque le document Word est ouvert par
XL, les icônes de la barre de fusion sont grisées, comme si la source de
données n'était pas sélectionnée alors qu'en ouvrant directement le document
Word, les fonctionnalités de fusion sont disponibles. Le document ne
semblerait pas en cause.

Donc j'ai rajouté après l'ouverture du document Word la "tartine" que Word
écrit quand dans le publipostage, on sélectionne la source de données.

' =============================================== ' ouverture du contrat Word ============================ With CreateObject(Class:="Word.Application")
.Documents.Open (LE_CONTRAT)
.Visible = True
End With

' redirection vers la source de données ===================== ActiveDocument.MailMerge.OpenDataSource Name:="U:VariablesContrat.xls", _
ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=U:VariablesContrat.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type5;" _
, SQLStatement:="SELECT * FROM `Variables$`", SQLStatement1:="",
SubType:=wdMergeSubTypeAccess

' affichage du résultat ================================ ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

' impression et fermeture ============================== ActiveDocument.PrintOut
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
Word.Application.Quit
' ===============================================
Mais à force de tester, j'arrive à une solution qui ne marche qu'une fois
sur deux !!! Comme un clignotant...
Une fois sur deux j'obtiens une
Erreur d'exécution '462': Le serveur distant n'existe pas ou n'est pas
disponible.
Donc j'arrête la macro, je ferme Word et je relance la macro.
Et ça marche.
Et ça marche pas.
...
J'admet que ça marche ou que ça ne marche pas, mais de façon alternative
j'ai du mal à accepter !

Voilà où j'en suis pour le moment.


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

*Bonjour Jac*,
J'ai fais un petit essai sous word en créant une macro. Ca donne ceci :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Donc je pense que dans ton bloc With, il ne faut pas imprimer directement,
mais ajouter ce code en le modifiant un peu (je fusionne dans un document)
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT)
With .Documents.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

Dis nous si çà te conviens


Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls
qui ne contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de
Variables.xls pour les fusionner avec OLE DB. Ça fonctionne parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word ============ >> With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les variables
du fichier XL. Le fichier revient toujours avec des anciennes données. Je
pense qu'il faudrait une mise à jour mais je ne vois pas comment la
rajouter.




Avatar
JLuc
*Bonjour Jac*,
Tu ferme bien le document Word, mais apparement tu ne ferme pas la
source de données. C'est peut être là qu'est ton soucis.

Bonjour Jean-Luc,
ta solution ne fonctionne pas... J'obtiens une erreur '438' Propriété non
gérée par cet objet dès que j'arrive sur
With .Documents.MailMerge

J'ai revu ma copie et remarqué que lorsque le document Word est ouvert par
XL, les icônes de la barre de fusion sont grisées, comme si la source de
données n'était pas sélectionnée alors qu'en ouvrant directement le document
Word, les fonctionnalités de fusion sont disponibles. Le document ne
semblerait pas en cause.

Donc j'ai rajouté après l'ouverture du document Word la "tartine" que Word
écrit quand dans le publipostage, on sélectionne la source de données.

' =============================================== > ' ouverture du contrat Word ============================ > With CreateObject(Class:="Word.Application")
.Documents.Open (LE_CONTRAT)
.Visible = True
End With

' redirection vers la source de données ===================== > ActiveDocument.MailMerge.OpenDataSource Name:="U:VariablesContrat.xls", _
ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=U:VariablesContrat.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type5;" _
, SQLStatement:="SELECT * FROM `Variables$`", SQLStatement1:="",
SubType:=wdMergeSubTypeAccess

' affichage du résultat ================================ > ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

' impression et fermeture ============================== > ActiveDocument.PrintOut
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
Word.Application.Quit
' =============================================== >
Mais à force de tester, j'arrive à une solution qui ne marche qu'une fois
sur deux !!! Comme un clignotant...
Une fois sur deux j'obtiens une
Erreur d'exécution '462': Le serveur distant n'existe pas ou n'est pas
disponible.
Donc j'arrête la macro, je ferme Word et je relance la macro.
Et ça marche.
Et ça marche pas.
...
J'admet que ça marche ou que ça ne marche pas, mais de façon alternative
j'ai du mal à accepter !

Voilà où j'en suis pour le moment.


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

*Bonjour Jac*,
J'ai fais un petit essai sous word en créant une macro. Ca donne ceci :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Donc je pense que dans ton bloc With, il ne faut pas imprimer directement,
mais ajouter ce code en le modifiant un peu (je fusionne dans un document)
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT)
With .Documents.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

Dis nous si çà te conviens


Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls
qui ne contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de
Variables.xls pour les fusionner avec OLE DB. Ça fonctionne parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word ============ >>> With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les variables
du fichier XL. Le fichier revient toujours avec des anciennes données. Je
pense qu'il faudrait une mise à jour mais je ne vois pas comment la
rajouter.




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
Jac
... sans doute...
Mais si j'ouvre directement mon doc de publipostage qui affiche les données
contenues dans XL, dans le gestionnaire de tâches, dans processus il n'y a
rien qui ressemble à XL. Donc, il me semble que Word regarde dans XL sans
l'ouvrir.

Mais je veux bien fermer la source. Tu as une idée pour y arriver ?


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

*Bonjour Jac*,
Tu ferme bien le document Word, mais apparement tu ne ferme pas la source
de données. C'est peut être là qu'est ton soucis.

Bonjour Jean-Luc,
ta solution ne fonctionne pas... J'obtiens une erreur '438' Propriété non
gérée par cet objet dès que j'arrive sur
With .Documents.MailMerge

J'ai revu ma copie et remarqué que lorsque le document Word est ouvert
par
XL, les icônes de la barre de fusion sont grisées, comme si la source de
données n'était pas sélectionnée alors qu'en ouvrant directement le
document
Word, les fonctionnalités de fusion sont disponibles. Le document ne
semblerait pas en cause.

Donc j'ai rajouté après l'ouverture du document Word la "tartine" que
Word
écrit quand dans le publipostage, on sélectionne la source de données.

' =============================================== >> ' ouverture du contrat Word ============================ >> With CreateObject(Class:="Word.Application")
.Documents.Open (LE_CONTRAT)
.Visible = True
End With

' redirection vers la source de données ===================== >> ActiveDocument.MailMerge.OpenDataSource Name:="U:VariablesContrat.xls",
_
ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=U:VariablesContrat.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet
OLEDB:Engine
Type5;" _
, SQLStatement:="SELECT * FROM `Variables$`", SQLStatement1:="",
SubType:=wdMergeSubTypeAccess

' affichage du résultat ================================ >> ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

' impression et fermeture ============================== >> ActiveDocument.PrintOut
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
Word.Application.Quit
' =============================================== >>
Mais à force de tester, j'arrive à une solution qui ne marche qu'une fois
sur deux !!! Comme un clignotant...
Une fois sur deux j'obtiens une
Erreur d'exécution '462': Le serveur distant n'existe pas ou n'est pas
disponible.
Donc j'arrête la macro, je ferme Word et je relance la macro.
Et ça marche.
Et ça marche pas.
...
J'admet que ça marche ou que ça ne marche pas, mais de façon alternative
j'ai du mal à accepter !

Voilà où j'en suis pour le moment.


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

*Bonjour Jac*,
J'ai fais un petit essai sous word en créant une macro. Ca donne ceci :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Donc je pense que dans ton bloc With, il ne faut pas imprimer
directement,
mais ajouter ce code en le modifiant un peu (je fusionne dans un
document)
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT)
With .Documents.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

Dis nous si çà te conviens


Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls
qui ne contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de
Variables.xls pour les fusionner avec OLE DB. Ça fonctionne
parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word ============ >>>> With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les
variables
du fichier XL. Le fichier revient toujours avec des anciennes données.
Je
pense qu'il faudrait une mise à jour mais je ne vois pas comment la
rajouter.




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O







Avatar
JLuc
*Bonjour Jac*,
Vu que tu es sous excel, essaie peut être :
Workbooks("VariablesContrat.xls").Close False

... sans doute...
Mais si j'ouvre directement mon doc de publipostage qui affiche les données
contenues dans XL, dans le gestionnaire de tâches, dans processus il n'y a
rien qui ressemble à XL. Donc, il me semble que Word regarde dans XL sans
l'ouvrir.

Mais je veux bien fermer la source. Tu as une idée pour y arriver ?


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

*Bonjour Jac*,
Tu ferme bien le document Word, mais apparement tu ne ferme pas la source
de données. C'est peut être là qu'est ton soucis.

Bonjour Jean-Luc,
ta solution ne fonctionne pas... J'obtiens une erreur '438' Propriété non
gérée par cet objet dès que j'arrive sur
With .Documents.MailMerge

J'ai revu ma copie et remarqué que lorsque le document Word est ouvert par
XL, les icônes de la barre de fusion sont grisées, comme si la source de
données n'était pas sélectionnée alors qu'en ouvrant directement le
document
Word, les fonctionnalités de fusion sont disponibles. Le document ne
semblerait pas en cause.

Donc j'ai rajouté après l'ouverture du document Word la "tartine" que Word
écrit quand dans le publipostage, on sélectionne la source de données.

' =============================================== >>> ' ouverture du contrat Word ============================ >>> With CreateObject(Class:="Word.Application")
.Documents.Open (LE_CONTRAT)
.Visible = True
End With

' redirection vers la source de données ===================== >>> ActiveDocument.MailMerge.OpenDataSource Name:="U:VariablesContrat.xls", _
ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=U:VariablesContrat.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type5;" _
, SQLStatement:="SELECT * FROM `Variables$`", SQLStatement1:="",
SubType:=wdMergeSubTypeAccess

' affichage du résultat ================================ >>> ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

' impression et fermeture ============================== >>> ActiveDocument.PrintOut
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
Word.Application.Quit
' =============================================== >>>
Mais à force de tester, j'arrive à une solution qui ne marche qu'une fois
sur deux !!! Comme un clignotant...
Une fois sur deux j'obtiens une
Erreur d'exécution '462': Le serveur distant n'existe pas ou n'est pas
disponible.
Donc j'arrête la macro, je ferme Word et je relance la macro.
Et ça marche.
Et ça marche pas.
...
J'admet que ça marche ou que ça ne marche pas, mais de façon alternative
j'ai du mal à accepter !

Voilà où j'en suis pour le moment.


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

*Bonjour Jac*,
J'ai fais un petit essai sous word en créant une macro. Ca donne ceci :
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Donc je pense que dans ton bloc With, il ne faut pas imprimer
directement,
mais ajouter ce code en le modifiant un peu (je fusionne dans un
document)
With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT)
With .Documents.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

Dis nous si çà te conviens


Bonjour à tous,

depuis une base de données dans XL, je génère un fichier Variables.xls
qui ne contient qu'une ligne de titres et une ligne de données.
J'ai un document Word publipostage qui reprend les données de
Variables.xls pour les fusionner avec OLE DB. Ça fonctionne
parfaitement.

Dans un souci d'automatisation, je cherche à imprimer le fichier Word
automatiquement suite à la génération du fichier Variables.xls
Pour cela j'utilise

' impression puis fermeture du contrat Word ============ >>>>> With CreateObject(Class:="Word.Application")
.Documents.Open(LE_CONTRAT).PrintOut
.Documents.Close savechanges:=wdDoNotSaveChanges
.Quit
End With

et là, le problème est que ma fusion ne prend pas en compte les
variables
du fichier XL. Le fichier revient toujours avec des anciennes données.
Je
pense qu'il faudrait une mise à jour mais je ne vois pas comment la
rajouter.




-- ____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O