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

publipostage Excel=>Word - Affichage "Selectionner Table"

2 réponses
Avatar
snack
Bonjour,
Depuis Excel, j'ouvre un classeur word qui effectue un publipostage avec les
données de mon classeur Excel.
Le problème : quand Word s'ouvre, il m'affiche une boîte de dialogue nommée
"Selectionner Table" qui me demande de sélectionner la source de données. Je
voudrais ne pas voir cette boîte pour ne pas perturber les utilisateurs.
J'ai beau lui passer la zone nommée d'Excel dans les paramètres Connection
ou SQLStatement, rien n'y fait, la boîte s'affiche toujours.
Je suis sur Word 2002.

With Word_Application
...
With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
Connection:="Base", _
Revert:=False, _
SQLStatement:="SELECT * FROM `Base$`"
...
end with
end with

Est-ce que quelqu'un saurait comment faire ?
Merci

2 réponses

Avatar
Anacoluthe
Bonjour !

'snack' nous a écrit ...
Bonjour,
Depuis Excel, j'ouvre un classeur word qui effectue un publipostage avec les
données de mon classeur Excel.
Le problème : quand Word s'ouvre, il m'affiche une boîte de dialogue nommée
"Selectionner Table" qui me demande de sélectionner la source de données. Je
voudrais ne pas voir cette boîte pour ne pas perturber les utilisateurs.
J'ai beau lui passer la zone nommée d'Excel dans les paramètres Connection
ou SQLStatement, rien n'y fait, la boîte s'affiche toujours.
Je suis sur Word 2002.

With Word_Application
...
With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
Connection:="Base", _
Revert:úlse, _
SQLStatement:="SELECT * FROM `Base$`"
...
end with
end with

Est-ce que quelqu'un saurait comment faire ?


Ce code est-il récupéré d'une ancienne version ?
Vous semblez en effet vouloir vous connecter à vos données en DDE
mais DDE n'est plus le protocole par défaut depuis WD2002.

Si vos données sont dans la plage nommée Base, le plus simple
est de vous connecter en OLEDB :

With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
SQLStatement:="SELECT * FROM [Base]"
End With

En DDE ça donne :

With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
Connection:="Base", SQLStatement:="" , _
SubType:=wdMergeSubTypeWord2000
End With

En DDE Base doit être nommée sur votre 1ère feuille sinon VBA
va encore vous demander de choisir une table (de la 1ère feuille).
En OLEDB Base peut être sur une feuille quelconque du classeur XL.

À vous de choisir la bonne voie. C'est mieux ?

Anacoluthe
« Le but n'est pas le but, c'est la voie. »
- LAO TSEU

Avatar
snack
Excellent, excellent !!!
Ce code était effectivement hérité d'Office 97, j'ai d'ailleurs mis un petit
bout de temps à comprendre pourquoi ça ne fonctionnait plus. D'après ce que
j'ai compris en lisant les archives (d'un de vos messages je crois !), c'est
dû à la mise en place de sécurités par rapport aux instructions SQL
(désactivables mais j'ai pas spécialement envie de faire des trous de
sécurité).
J'ai donc utilisé la routine :

With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
SQLStatement:="SELECT * FROM [Base]"
End With


Un grand merci à vous et bonne continuation dans tout ce que vous faites !

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

Bonjour !

'snack' nous a écrit ...
Bonjour,
Depuis Excel, j'ouvre un classeur word qui effectue un publipostage avec
les données de mon classeur Excel.
Le problème : quand Word s'ouvre, il m'affiche une boîte de dialogue
nommée "Selectionner Table" qui me demande de sélectionner la source de
données. Je voudrais ne pas voir cette boîte pour ne pas perturber les
utilisateurs.
J'ai beau lui passer la zone nommée d'Excel dans les paramètres
Connection ou SQLStatement, rien n'y fait, la boîte s'affiche toujours.
Je suis sur Word 2002.

With Word_Application
...
With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
Connection:="Base", _
Revert:úlse, _
SQLStatement:="SELECT * FROM `Base$`"
...
end with
end with

Est-ce que quelqu'un saurait comment faire ?


Ce code est-il récupéré d'une ancienne version ?
Vous semblez en effet vouloir vous connecter à vos données en DDE
mais DDE n'est plus le protocole par défaut depuis WD2002.

Si vos données sont dans la plage nommée Base, le plus simple
est de vous connecter en OLEDB :

With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
SQLStatement:="SELECT * FROM [Base]"
End With

En DDE ça donne :

With .ActiveDocument.MailMerge
.OpenDataSource _
Name:=ThisWorkbook.FullName, _
Connection:="Base", SQLStatement:="" , _
SubType:=wdMergeSubTypeWord2000
End With

En DDE Base doit être nommée sur votre 1ère feuille sinon VBA
va encore vous demander de choisir une table (de la 1ère feuille).
En OLEDB Base peut être sur une feuille quelconque du classeur XL.

À vous de choisir la bonne voie. C'est mieux ?

Anacoluthe
« Le but n'est pas le but, c'est la voie. »
- LAO TSEU