Publipostage VBA

Le
CAP2
Bonsoir à toutes et à tous,

voilà, je voudrais automatiser un publipostage utilisant comme source un
fichier Excel.

Dans le fichier Excel, j'ai plusieurs champs dont un champ "date envoi" et
un champ "type"

J'aurais voulu savoir si je peux lancer mon document word, exécuter une
macro qui aille me chercher ce fichier Excel et qui ne prenne en compte pour
le publipostage que les enregistrements dont la "date envoi" est égale à la
date du jour et dont le type est égal à une valeur donnée

J'ai bien tenté un :

ActiveDocument.MailMerge.OpenDataSource

avec un argument du type :

SQLStatement:="SELECT * FROM `BASE$` WHERE `Date envoi` = Date AND `Type` =
'test'

Mais ça ne passe pas

Merci d'avance de vos idées et suggestions

CAP2
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Anacoluthe
Le #1725250
Bonjour !

'CAP2' nous a écrit ...
SQLStatement:="SELECT * FROM `BASE$` WHERE `Date envoi` = Date AND `Type` =
'test'
Mais ça ne passe pas...


Votre requête SQL est une chaîne. Vous devez recomposer cette chaîne avec
les opérateurs habituels de concaténation
"SELECT * FROM `BASE$` WHERE `Date envoi` = " & date & " AND ...
date doit avoir le bon format chaîne de date, sinon écrivez des trucs comme
"WHERE `Date envoi` = " & Format(Date, "dd-MM-yy") & " ... "
S'ajoute souvent dans une requête SQL la délicate question des guillemets:
dans une chaîne vba on place des " en les doublant ""

Anacoluthe
« Qui cherche le plaisir ne trouve que des chaînes. »
- Jacques DEVAL

CAP2
Le #1725056
Super !!

Merci beaucoup Anacoluthe !!

J'avais 2 erreurs : La concaténation erronée et les guillemets doublés pour
les chaînes (j'avais juste placé des ')

Merci encore !

CAP2
CAP2
Le #1725055
Super !!

Merci beaucoup Anacoluthe !!

J'avais 2 erreurs : La concaténation erronée et les guillemets doublés pour
les chaînes (j'avais juste placé des ')

Merci encore !

CAP2
CAP2
Le #1725054
Re-bonsoir Anacoluthe,

si je peux abuser de ta patience...

Mon champ "Date envoi" est bein écrit sous excel sous la forme jj/mm/aaaa.

Il arrive dans Word sour la forme mm/jj/aaaa.

Je demande donc la confirmation des conversions lors de l'ouverture et je
choisis " ... Excel via un DDE".

Du coup les données arrivent bien sous la forme jj/mm/aaaa.

Mon code est le suivant :

ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:Documents and SettingsNeuroMes documentsSource.xls", _
ConfirmConversions:=True, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="",
_
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse,
_
Format:=wdOpenFormatAuto, Connection:="Region1",
SQLStatement:="SELECT * FROM `Region1` WHERE `Date envoi`= " & Date & " AND
`Type courrier`=""p1 bis""", _
SQLStatement1:="", SubType:=wdMergeSubTypeAccess

Et ça me donne 0 enregistrement, alors qu'il y en a...
De plus, si j'enlève la partie sur le filtre sur la date, ça passe, mais il
me rebascule les dates au format mm/jj/aaaa

GRRR!!

Puis-je rester à chaque lancement de la macro au format jj/mm/aaaa sur mes
date, et en plus faire que le test sur la date du jour passe ?

Merci de ton indulgence et de ton aide !!

CAP2
Anacoluthe
Le #1724849
Bonjour !

'CAP2' nous a écrit ...
Je demande donc la confirmation des conversions lors de l'ouverture et je
choisis " ... Excel via un DDE".
Du coup les données arrivent bien sous la forme jj/mm/aaaa.
si j'enlève la partie sur le filtre sur la date, ça passe, mais il
me rebascule les dates au format mm/jj/aaaa


Votre macro re-ouvre la base de données, mais probablement plus par DDE.
En DDE on ne peut accéder qu'à la /première/ feuille d'un classeur Excel

Anacoluthe
« La vraie nouveauté naît toujours dans le retour aux sources. »
- Edgar MORIN

Publicité
Poster une réponse
Anonyme