OVH Cloud OVH Cloud

Publipostage depuis Access

15 réponses
Avatar
Luis
Bonjour,
J'ai pr=E9par=E9 un Mod=E8le Word avec les champs

"Soci=E9t=E9"
"Adresse" etc....

Et depuis un formulaire en continu Access une commande=20
avec:


Dim W_App As Object
Set W_App =3D CreateObject("Word.Application")
Dim Db As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
Set Db =3D CurrentDb
strSQL =3D "SELECT NClient, [Raison sociale], ADRESSE,=20
NP, VILLE, Bcontact, Bd=E9partement FROM Clients WHERE=20
NClient =3D" & Forms![PROSPECTSELECTST].NCLIENT

Set RS =3D Db.OpenRecordset(strSQL)
RS.MoveFirst
With W_App
.Visible =3D True
Do Until RS.EOF
.Documents.Open ("c:\WINDOWS\Bureau\Mails.dot")
.ActiveDocument.Bookmarks("Soci=E9t=E9").Select
.Selection.InsertAfter RS.Fields("RAISON=20
SOCIALE")
.ActiveDocument.Bookmarks("ADRESSE").Select
.Selection.InsertAfter RS.Fields("ADRESSE")
.ActiveDocument.Bookmarks("NP").Select
.Selection.InsertAfter RS.Fields("NP")
.ActiveDocument.Bookmarks("Ville").Select
.Selection.InsertAfter RS.Fields("Ville")
.ActiveDocument.Bookmarks("Bcontact").Select
.Selection.InsertAfter RS.Fields("Bcontact")
.ActiveDocument.Bookmarks
("Bd=E9partement").Select
.Selection.InsertAfter RS.Fields
("Bd=E9partement")
=20
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
RS.MoveNext
Loop
RS.Close
Set RS =3D Nothing
Set Db =3D Nothing
.Quit
End With
Set W_App =3D Nothing

Probl=E8mes:
1. Il n'y a qu'un seul client qui est imprim=E9
2. les Champs ne viennet pas dans les=20
champs "soci=E9t=E9"; "ADRESSE" etc... du document Word mais=20
au dessus.
Savez-vous comment avoir tous les clients et pas un seul=20
et comment faire pour que les champs se mettent la ou ils=20
doivent.
Luis

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour Luis.

Tu n'exagère pas un peu, dis ?
tu fais une requête :
strSQL = "SELECT NClient, [Raison sociale], ADRESSE,
NP, VILLE, Bcontact, Bdépartement FROM Clients WHERE
NClient =" & Forms![PROSPECTSELECTST].NCLIENT
et tu demandes pourquoi tu n'as qu'un seul client ?
réfléchis un peu, on en reparle.

pour le placement, tes onglets ne sont pas au bon endroit.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans le message de
news: 19fd01c4b5d4$afc1e2b0$
Bonjour,
J'ai préparé un Modèle Word avec les champs

"Société"
"Adresse" etc....

Et depuis un formulaire en continu Access une commande
avec:


Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
Set Db = CurrentDb
strSQL = "SELECT NClient, [Raison sociale], ADRESSE,
NP, VILLE, Bcontact, Bdépartement FROM Clients WHERE
NClient =" & Forms![PROSPECTSELECTST].NCLIENT

Set RS = Db.OpenRecordset(strSQL)
RS.MoveFirst
With W_App
.Visible = True
Do Until RS.EOF
.Documents.Open ("c:WINDOWSBureauMails.dot")
.ActiveDocument.Bookmarks("Société").Select
.Selection.InsertAfter RS.Fields("RAISON
SOCIALE")
.ActiveDocument.Bookmarks("ADRESSE").Select
.Selection.InsertAfter RS.Fields("ADRESSE")
.ActiveDocument.Bookmarks("NP").Select
.Selection.InsertAfter RS.Fields("NP")
.ActiveDocument.Bookmarks("Ville").Select
.Selection.InsertAfter RS.Fields("Ville")
.ActiveDocument.Bookmarks("Bcontact").Select
.Selection.InsertAfter RS.Fields("Bcontact")
.ActiveDocument.Bookmarks
("Bdépartement").Select
.Selection.InsertAfter RS.Fields
("Bdépartement")

.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Set Db = Nothing
.Quit
End With
Set W_App = Nothing

Problèmes:
1. Il n'y a qu'un seul client qui est imprimé
2. les Champs ne viennet pas dans les
champs "société"; "ADRESSE" etc... du document Word mais
au dessus.
Savez-vous comment avoir tous les clients et pas un seul
et comment faire pour que les champs se mettent la ou ils
doivent.
Luis
Avatar
Luis
Bonjour Raymond,
Tu as raison Le NClient est de trop, mais je n'y arrive
pas, je tourne ça dans tous les sens et je n'arrive pas à
faire une requête qui tienne la route.
J'ai besoin de tes lumières.
Luis
-----Message d'origine-----
Bonjour Luis.

Tu n'exagère pas un peu, dis ?
tu fais une requête :
strSQL = "SELECT NClient, [Raison sociale], ADRESSE,
NP, VILLE, Bcontact, Bdépartement FROM Clients WHERE
NClient =" & Forms![PROSPECTSELECTST].NCLIENT
et tu demandes pourquoi tu n'as qu'un seul client ?
réfléchis un peu, on en reparle.

pour le placement, tes onglets ne sont pas au bon endroit.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans
le message de

news: 19fd01c4b5d4$afc1e2b0$
Bonjour,
J'ai préparé un Modèle Word avec les champs

"Société"
"Adresse" etc....

Et depuis un formulaire en continu Access une commande
avec:


Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
Set Db = CurrentDb
strSQL = "SELECT NClient, [Raison sociale], ADRESSE,
NP, VILLE, Bcontact, Bdépartement FROM Clients WHERE
NClient =" & Forms![PROSPECTSELECTST].NCLIENT

Set RS = Db.OpenRecordset(strSQL)
RS.MoveFirst
With W_App
.Visible = True
Do Until RS.EOF
.Documents.Open
("c:WINDOWSBureauMails.dot")

.ActiveDocument.Bookmarks("Société").Select
.Selection.InsertAfter RS.Fields("RAISON
SOCIALE")
.ActiveDocument.Bookmarks("ADRESSE").Select
.Selection.InsertAfter RS.Fields("ADRESSE")
.ActiveDocument.Bookmarks("NP").Select
.Selection.InsertAfter RS.Fields("NP")
.ActiveDocument.Bookmarks("Ville").Select
.Selection.InsertAfter RS.Fields("Ville")
.ActiveDocument.Bookmarks("Bcontact").Select
.Selection.InsertAfter RS.Fields("Bcontact")
.ActiveDocument.Bookmarks
("Bdépartement").Select
.Selection.InsertAfter RS.Fields
("Bdépartement")

.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Set Db = Nothing
.Quit
End With
Set W_App = Nothing

Problèmes:
1. Il n'y a qu'un seul client qui est imprimé
2. les Champs ne viennet pas dans les
champs "société"; "ADRESSE" etc... du document Word mais
au dessus.
Savez-vous comment avoir tous les clients et pas un seul
et comment faire pour que les champs se mettent la ou ils
doivent.
Luis


.



Avatar
Raymond [mvp]
Supprime la clause where si tu veux tous les clients.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans le message de
news: 12fb01c4b5e2$2cd4b3b0$
Bonjour Raymond,
Tu as raison Le NClient est de trop, mais je n'y arrive
pas, je tourne ça dans tous les sens et je n'arrive pas à
faire une requête qui tienne la route.
J'ai besoin de tes lumières.
Luis
Avatar
Luis
Bonjour Raymond,
Ca j'ai essayé, mais j'ai du mal essayer car si j'enlève
la clause WHERE j'ai tous les 13'062 clients de la
table 'Clients' qui sont exportés vers Word pas les 121 du
formulaire.
Voilà pourquoi je n'y arrive pas.
Luis
-----Message d'origine-----
Supprime la clause where si tu veux tous les clients.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans
le message de

news: 12fb01c4b5e2$2cd4b3b0$
Bonjour Raymond,
Tu as raison Le NClient est de trop, mais je n'y arrive
pas, je tourne ça dans tous les sens et je n'arrive pas à
faire une requête qui tienne la route.
J'ai besoin de tes lumières.
Luis


.



Avatar
Raymond [mvp]
reprenons, si tu veux avoir les mêmes clients que dans ton formulaire, la
requête lancée doit avoir la même clause where que ton formulaire (ou le
même filtre traduit en clause where).
Source du formulaire ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans le message de
news: 050d01c4b5e8$364b6f50$
Bonjour Raymond,
Ca j'ai essayé, mais j'ai du mal essayer car si j'enlève
la clause WHERE j'ai tous les 13'062 clients de la
table 'Clients' qui sont exportés vers Word pas les 121 du
formulaire.
Voilà pourquoi je n'y arrive pas.
Luis
Avatar
Luis
Ce formulaire ne présente pas tous les clients qui sont
dans la requête mais uniquement les clients filtrés par un
autre formulaire dans lequel je sélection si des
renseignements commerciaux ont été pris, si nous avons
déjà travaillé avec lui, la date à laquelle nous l'avons
contacté pour la dernière fois, à quelle date sa dernière
commande etc....

Lorsque l'on a choisi un ou plusieurs de ces critères le
formulaire en questio s'ouvre et ne présente que les
clients correspondant aux critères.
Pour cette raison je ne peux pas enlever la clause where
qui doit pointer sur la sélection faite sur le formulaire
lui-même mais pas sur la requête ou la table.
J'espère que j'ai réussi à me faire comprendre.
Luis
-----Message d'origine-----
reprenons, si tu veux avoir les mêmes clients que dans
ton formulaire, la

requête lancée doit avoir la même clause where que ton
formulaire (ou le

même filtre traduit en clause where).
Source du formulaire ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans
le message de

news: 050d01c4b5e8$364b6f50$
Bonjour Raymond,
Ca j'ai essayé, mais j'ai du mal essayer car si j'enlève
la clause WHERE j'ai tous les 13'062 clients de la
table 'Clients' qui sont exportés vers Word pas les 121 du
formulaire.
Voilà pourquoi je n'y arrive pas.
Luis


.



Avatar
Raymond [mvp]
je ne te demande pas d'enlever mais d'appliquer exactement la même clause
que tu appliques sur le formulaire, sans plus mais pas moins, sinon comment
veux-tu obtenir la liste de clients ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans le message de
news: 053c01c4b5eb$4b1f21d0$
Ce formulaire ne présente pas tous les clients qui sont
dans la requête mais uniquement les clients filtrés par un
autre formulaire dans lequel je sélection si des
renseignements commerciaux ont été pris, si nous avons
déjà travaillé avec lui, la date à laquelle nous l'avons
contacté pour la dernière fois, à quelle date sa dernière
commande etc....

Lorsque l'on a choisi un ou plusieurs de ces critères le
formulaire en questio s'ouvre et ne présente que les
clients correspondant aux critères.
Pour cette raison je ne peux pas enlever la clause where
qui doit pointer sur la sélection faite sur le formulaire
lui-même mais pas sur la requête ou la table.
J'espère que j'ai réussi à me faire comprendre.
Luis
Avatar
Luis
Je ne peux pas appliquer la même clause car le formulaire
qui sélectionne est fermé et que l'on fait référence à ce
formulaire pour la sélection, je te met un petit bout de
code du 1er formulaire et tu comprendra:

Case 111011111
DoCmd.OpenForm "PROSPECTREGIONCOMMANDEOPST1ER",
acNormal, , "(REGION=([Forms]![CLP].[Champ108]) AND
([CONTROLE_OC]=[FORMS]![CLP].[CHAMP25]) AND ([STATUT]=
[FORMS]![CLP].[CHAMP101]) AND ([CONTROLE_OC]=[FORMS]![CLP].
[CHAMP25]) AND ([MaxDeDateCommande]<[FORMS]![CLP].
[Texte138]) AND ([Forms]![CLP].[Texte135] = 1))"
[Forms]![PROSPECTREGIONCOMMANDEOPST1ER].[TITRE] = "
DERNIERE COMMANDE SELON REGION, OP ET STATUT PAR CLIENT
AVEC 1er CONTACT "

Case 111101111 'OP, STATUT, REGION, COMMANDE, SELECT2
DoCmd.OpenForm "PROSPECTREGIONCOMMANDEOPST2EME",
acNormal, , "(REGION=([Forms]![CLP].[Champ108]) AND
([CONTROLE_OC]=[FORMS]![CLP].[CHAMP25]) AND ([STATUT]=
[FORMS]![CLP].[CHAMP101]) AND ([CONTROLE_OC]=[FORMS]![CLP].
[CHAMP25]) AND ([MaxDeDateCommande]<[FORMS]![CLP].
[Texte138]) AND ([Forms]![CLP].[Texte135] = 2))"
[Forms]![PROSPECTREGIONCOMMANDEOPST2EME].[TITRE] = "
DERNIERE COMMANDE SELON REGION, OP ET STATUT PAR CLIENT
AVEC 2ème CONTACT "

Case 111110111 'OP, STATUT, REGION, COMMANDE, SELECT3
DoCmd.OpenForm "PROSPECTREGIONCOMMANDEOPST3EME",
acNormal, , "(REGION=([Forms]![CLP].[Champ108]) AND
([CONTROLE_OC]=[FORMS]![CLP].[CHAMP25]) AND ([STATUT]=
[FORMS]![CLP].[CHAMP101]) AND ([CONTROLE_OC]=[FORMS]![CLP].
[CHAMP25]) AND ([MaxDeDateCommande]<[FORMS]![CLP].
[Texte138]) AND ([Forms]![CLP].[Texte135] = 3))"
[Forms]![PROSPECTREGIONCOMMANDEOPST3EME].[TITRE] = "
DERNIERE COMMANDE SELON REGION, OP ET STATUT PAR CLIENT
AVEC 3ème CONTACT "

Case 111111011 'OP, STATUT, REGION, COMMANDE, SELECT4
DoCmd.OpenForm "PROSPECTREGIONCOMMANDEOPST",
acNormal, , "(REGION=([Forms]![CLP].[Champ108]) AND
([CONTROLE_OC]=[FORMS]![CLP].[CHAMP25]) AND ([STATUT]=
[FORMS]![CLP].[CHAMP101]) AND ([CONTROLE_OC]=[FORMS]![CLP].
[CHAMP25]) AND ([MaxDeDateCommande]<[FORMS]![CLP].
[Texte138]) AND ([Forms]![CLP].[Texte135] = 4))"
[Forms]![PROSPECTREGIONCOMMANDEOPST].[TITRE] = " DERNIERE
COMMANDE SELON REGION, OP ET STATUT PAR CLIENT "

Case 111111101 'OP, STATUT, REGION, COMMANDE, SELECT5
DoCmd.OpenForm "PROSPECTREGIONCOMMANDESELECTOPST",
acNormal, , "(REGION=([Forms]![CLP].[Champ108]) AND
([CONTROLE_OC]=[FORMS]![CLP].[CHAMP25]) AND ([STATUT]=
[FORMS]![CLP].[CHAMP101]) AND ([CONTROLE_OC]=[FORMS]![CLP].
[CHAMP25]) AND ([MaxDeDateCommande]<[FORMS]![CLP].
[Texte138]) AND ([Forms]![CLP].[Texte135] = 5))"
[Forms]![PROSPECTREGIONCOMMANDESELECTOPST].[TITRE] = "
DERNIERE COMMANDE SELON REGION, OP ET STATUT PAR CLIENT
AVEC CONTACT SELECTIONNE"

La sélection étant faite (formulaire 'CLP')le 2ème
formulaire s'ouvre et c'est à partir de ce qui est dans le
2ème formulaire que je veux faire le publipostage.

Voilà mon problème.
Luis

-----Message d'origine-----
je ne te demande pas d'enlever mais d'appliquer
exactement la même clause

que tu appliques sur le formulaire, sans plus mais pas
moins, sinon comment

veux-tu obtenir la liste de clients ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans
le message de

news: 053c01c4b5eb$4b1f21d0$
Ce formulaire ne présente pas tous les clients qui sont
dans la requête mais uniquement les clients filtrés par un
autre formulaire dans lequel je sélection si des
renseignements commerciaux ont été pris, si nous avons
déjà travaillé avec lui, la date à laquelle nous l'avons
contacté pour la dernière fois, à quelle date sa dernière
commande etc....

Lorsque l'on a choisi un ou plusieurs de ces critères le
formulaire en questio s'ouvre et ne présente que les
clients correspondant aux critères.
Pour cette raison je ne peux pas enlever la clause where
qui doit pointer sur la sélection faite sur le formulaire
lui-même mais pas sur la requête ou la table.
J'espère que j'ai réussi à me faire comprendre.
Luis


.



Avatar
Raymond [mvp]
pas de formulaire, pas de clause, pas de liste.
il faut que tu charges une/des variable(s) public avec les clauses
successives que tu appliques et à la fin tu reconstitues la clause à
appliquer à l'état. il n'y a pas d'autre solution.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans le message de
news: 1fdc01c4b5f2$70b15740$
Je ne peux pas appliquer la même clause car le formulaire
qui sélectionne est fermé et que l'on fait référence à ce
formulaire pour la sélection, je te met un petit bout de
code du 1er formulaire et tu comprendra:
Avatar
Luis
Bonjour Raymond,
T'es sûr qu'il n'y a pas moyen d'extraire les données
depuis le formulaire filtré?
Par ce que je t'explique:
Je viens de vérifier j'ai 1'200 sélections possibles
depuis le formulaire de tri et j'ai encore 4 autre
formulaire de tri aussi bourrés que ça.
De la façon dont tu me l'explique ça équivaut à
recommenrcer tout le travail de sélection.
J'en ai pour des années.
De plus la methode par select case est une méthode que je
trouve très simple.
Malgré tout si tu as une idée...
Merci tout de même.
Luis
-----Message d'origine-----
pas de formulaire, pas de clause, pas de liste.
il faut que tu charges une/des variable(s) public avec
les clauses

successives que tu appliques et à la fin tu reconstitues
la clause à

appliquer à l'état. il n'y a pas d'autre solution.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Luis" a écrit dans
le message de

news: 1fdc01c4b5f2$70b15740$
Je ne peux pas appliquer la même clause car le formulaire
qui sélectionne est fermé et que l'on fait référence à ce
formulaire pour la sélection, je te met un petit bout de
code du 1er formulaire et tu comprendra:


.



1 2