OVH Cloud OVH Cloud

suite du publipostage pour Raymond

6 réponses
Avatar
yannick
Bonjour, suite à la question soulever sur le publipostage pas de probleme
cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une autre
participantsf. J'ai soulever le pb hier (22/12/04, pb de requette) je
voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS, Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM (Formation
INNER JOIN TypeFormation ON Formation.Type = TypeFormation.Type) INNER JOIN
ParticipantF ON Formation.N°Formation = ParticipantF.N°Formation WHERE
((Formation.N°Formation)= " & Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:\convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on faire un
boucle a l'interieur de mon code qui me permeterais de modififier la valeur
des champs nom, prenom, emploi par mom1, prenom1, fonction1, nom2, prenom2,
fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick

6 réponses

Avatar
Eric
Bonjour Yannick

Tu veux une seule ligne pour 1 seul N° de formation mais pour laquelle tu
aurais dans des champs séparés les noms et prénoms des personnes ?
C'est bien ca ?

Eric


"=?Utf-8?B?eWFubmljaw==?=" écrivait
news::

Bonjour, suite à la question soulever sur le publipostage pas de
probleme cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une
autre participantsf. J'ai soulever le pb hier (22/12/04, pb de
requette) je voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS,
Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM
(Formation INNER JOIN TypeFormation ON Formation.Type > TypeFormation.Type) INNER JOIN ParticipantF ON Formation.N°Formation
= ParticipantF.N°Formation WHERE ((Formation.N°Formation)= " &
Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on
faire un boucle a l'interieur de mon code qui me permeterais de
modififier la valeur des champs nom, prenom, emploi par mom1,
prenom1, fonction1, nom2, prenom2, fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick






Avatar
Eric
re Yannick,

J'ai repris les infos de ton post du 22/12 pour la requête et dans celui
ci tu as 2 jointures donc à toi d'adapter le sql.

Je ne vois pas d'autre méthode que de créer une table temporaire pour la
fusion. La procédure ci-dessous le fait. A toi d'adapter les champs.

Sub Yannick()
On Error GoTo Err_Suppression
Dim strSQL As String, rst As DAO.Recordset
Dim cpt As Integer, i As Integer
' A toi de passer en paramètre le n° de la formation
strSQL = "select Formation.numF,Intitule, Nom,Prenom "
strSQL = strSQL & "from formation inner join participant "
strSQL = strSQL & "on formation.numf=participant.numf "
strSQL = strSQL & "where formation.numf=1 " '< --Ici
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.BOF Then Exit Sub
' on cherche le nombre de personnes suivant cette formation
' ce qui permet de créer autant de couples chpNom, chpPrenom
' que nécessaire dans la table Mailing
rst.MoveLast
cpt = rst.RecordCount
rst.MoveFirst
' Création de la table temporaire pour le mailing
strSQL = "create table Mailing( "
strSQL = strSQL & "Numf Integer, intitule text,"
For i = 1 To cpt
strSQL = strSQL & "chpNom" & i & " Text, chpPrenom" _
& i & " Text,"
Next i
strSQL = Left(strSQL, Len(strSQL) - 1)
strSQL = strSQL & ");"
CurrentDb.Execute strSQL ' Création de la table
'rst(0) = N° Formation, rst(1)= Intitulé
strSQL = "Insert into Mailing Values(" & rst(0) & ",""" _
& rst(1) & ""","""
' rst(2) et rst(3) les noms, prenoms
While Not rst.EOF
strSQL = strSQL & rst(2) & """,""" & rst(3) _
& ""","""
rst.MoveNext
Wend
strSQL = Left(strSQL, Len(strSQL) - 2)
strSQL = strSQL & ");"
' Insertion des données dans la table Mailing
CurrentDb.Execute strSQL
Exit Sub
Err_Suppression:
If Err.Number = 3010 Then
CurrentDb.TableDefs.Delete "Mailing"
Resume
Else
MsgBox Err.Description, Err.Number
End If
End Sub

Il faut que ce code soit exécuté avant l'instruction :
Set Rst = Db.OpenRecordset(Strsql)
qui devient :
Set Rst = Db.OpenRecordset("Mailing")

A+

Eric


"=?Utf-8?B?eWFubmljaw==?=" écrivait
news::

Bonjour, suite à la question soulever sur le publipostage pas de
probleme cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une
autre participantsf. J'ai soulever le pb hier (22/12/04, pb de
requette) je voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS,
Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM
(Formation INNER JOIN TypeFormation ON Formation.Type > TypeFormation.Type) INNER JOIN ParticipantF ON Formation.N°Formation
= ParticipantF.N°Formation WHERE ((Formation.N°Formation)= " &
Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on
faire un boucle a l'interieur de mon code qui me permeterais de
modififier la valeur des champs nom, prenom, emploi par mom1,
prenom1, fonction1, nom2, prenom2, fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick





Avatar
Raymond [mvp]
Bonjour.

je n'ai pas participé à la conversation sur la requête, mais je ne vois pas
la relation entre ta requête avec ses champs et ton code.

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


"yannick" a écrit dans le message de
news:
Bonjour, suite à la question soulever sur le publipostage pas de probleme
cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une autre
participantsf. J'ai soulever le pb hier (22/12/04, pb de requette) je
voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS, Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM (Formation
INNER JOIN TypeFormation ON Formation.Type = TypeFormation.Type) INNER
JOIN
ParticipantF ON Formation.N°Formation = ParticipantF.N°Formation WHERE
((Formation.N°Formation)= " & Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on faire un
boucle a l'interieur de mon code qui me permeterais de modififier la
valeur
des champs nom, prenom, emploi par mom1, prenom1, fonction1, nom2,
prenom2,
fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick





Avatar
yannick
Merci Eric c'est bien ça je dois passer par une table temporaire,
j'essaye d'adapter à ta solution mais quelle galere, je n'avance pas.
je suis perdu.
Je poursuis mes modifications
Merci pour tes reponses.

@+
yannick




re Yannick,

J'ai repris les infos de ton post du 22/12 pour la requête et dans celui
ci tu as 2 jointures donc à toi d'adapter le sql.

Je ne vois pas d'autre méthode que de créer une table temporaire pour la
fusion. La procédure ci-dessous le fait. A toi d'adapter les champs.

Sub Yannick()
On Error GoTo Err_Suppression
Dim strSQL As String, rst As DAO.Recordset
Dim cpt As Integer, i As Integer
' A toi de passer en paramètre le n° de la formation
strSQL = "select Formation.numF,Intitule, Nom,Prenom "
strSQL = strSQL & "from formation inner join participant "
strSQL = strSQL & "on formation.numf=participant.numf "
strSQL = strSQL & "where formation.numf=1 " '< --Ici
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.BOF Then Exit Sub
' on cherche le nombre de personnes suivant cette formation
' ce qui permet de créer autant de couples chpNom, chpPrenom
' que nécessaire dans la table Mailing
rst.MoveLast
cpt = rst.RecordCount
rst.MoveFirst
' Création de la table temporaire pour le mailing
strSQL = "create table Mailing( "
strSQL = strSQL & "Numf Integer, intitule text,"
For i = 1 To cpt
strSQL = strSQL & "chpNom" & i & " Text, chpPrenom" _
& i & " Text,"
Next i
strSQL = Left(strSQL, Len(strSQL) - 1)
strSQL = strSQL & ");"
CurrentDb.Execute strSQL ' Création de la table
'rst(0) = N° Formation, rst(1)= Intitulé
strSQL = "Insert into Mailing Values(" & rst(0) & ",""" _
& rst(1) & ""","""
' rst(2) et rst(3) les noms, prenoms
While Not rst.EOF
strSQL = strSQL & rst(2) & """,""" & rst(3) _
& ""","""
rst.MoveNext
Wend
strSQL = Left(strSQL, Len(strSQL) - 2)
strSQL = strSQL & ");"
' Insertion des données dans la table Mailing
CurrentDb.Execute strSQL
Exit Sub
Err_Suppression:
If Err.Number = 3010 Then
CurrentDb.TableDefs.Delete "Mailing"
Resume
Else
MsgBox Err.Description, Err.Number
End If
End Sub

Il faut que ce code soit exécuté avant l'instruction :
Set Rst = Db.OpenRecordset(Strsql)
qui devient :
Set Rst = Db.OpenRecordset("Mailing")

A+

Eric


"=?Utf-8?B?eWFubmljaw==?=" écrivait
news::

Bonjour, suite à la question soulever sur le publipostage pas de
probleme cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une
autre participantsf. J'ai soulever le pb hier (22/12/04, pb de
requette) je voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS,
Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM
(Formation INNER JOIN TypeFormation ON Formation.Type > > TypeFormation.Type) INNER JOIN ParticipantF ON Formation.N°Formation
= ParticipantF.N°Formation WHERE ((Formation.N°Formation)= " &
Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on
faire un boucle a l'interieur de mon code qui me permeterais de
modififier la valeur des champs nom, prenom, emploi par mom1,
prenom1, fonction1, nom2, prenom2, fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick









Avatar
yannick
Eric, je te dois un grand merci

j' avance petit a petit et pour l'instant cela fonctionne

@+

Yannick



re Yannick,

J'ai repris les infos de ton post du 22/12 pour la requête et dans celui
ci tu as 2 jointures donc à toi d'adapter le sql.

Je ne vois pas d'autre méthode que de créer une table temporaire pour la
fusion. La procédure ci-dessous le fait. A toi d'adapter les champs.

Sub Yannick()
On Error GoTo Err_Suppression
Dim strSQL As String, rst As DAO.Recordset
Dim cpt As Integer, i As Integer
' A toi de passer en paramètre le n° de la formation
strSQL = "select Formation.numF,Intitule, Nom,Prenom "
strSQL = strSQL & "from formation inner join participant "
strSQL = strSQL & "on formation.numf=participant.numf "
strSQL = strSQL & "where formation.numf=1 " '< --Ici
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.BOF Then Exit Sub
' on cherche le nombre de personnes suivant cette formation
' ce qui permet de créer autant de couples chpNom, chpPrenom
' que nécessaire dans la table Mailing
rst.MoveLast
cpt = rst.RecordCount
rst.MoveFirst
' Création de la table temporaire pour le mailing
strSQL = "create table Mailing( "
strSQL = strSQL & "Numf Integer, intitule text,"
For i = 1 To cpt
strSQL = strSQL & "chpNom" & i & " Text, chpPrenom" _
& i & " Text,"
Next i
strSQL = Left(strSQL, Len(strSQL) - 1)
strSQL = strSQL & ");"
CurrentDb.Execute strSQL ' Création de la table
'rst(0) = N° Formation, rst(1)= Intitulé
strSQL = "Insert into Mailing Values(" & rst(0) & ",""" _
& rst(1) & ""","""
' rst(2) et rst(3) les noms, prenoms
While Not rst.EOF
strSQL = strSQL & rst(2) & """,""" & rst(3) _
& ""","""
rst.MoveNext
Wend
strSQL = Left(strSQL, Len(strSQL) - 2)
strSQL = strSQL & ");"
' Insertion des données dans la table Mailing
CurrentDb.Execute strSQL
Exit Sub
Err_Suppression:
If Err.Number = 3010 Then
CurrentDb.TableDefs.Delete "Mailing"
Resume
Else
MsgBox Err.Description, Err.Number
End If
End Sub

Il faut que ce code soit exécuté avant l'instruction :
Set Rst = Db.OpenRecordset(Strsql)
qui devient :
Set Rst = Db.OpenRecordset("Mailing")

A+

Eric


"=?Utf-8?B?eWFubmljaw==?=" écrivait
news::

Bonjour, suite à la question soulever sur le publipostage pas de
probleme cela fonctionne tres bien.
Le seul pb mais un gros, c'est que j'ai une table formation, et une
autre participantsf. J'ai soulever le pb hier (22/12/04, pb de
requette) je voudrais obtenir une seule ligne pour le N°formation.

Voici mon code de publipostage:

Private Sub Commande0_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Strsql As String
Set Db = CurrentDb

Strsql = "SELECT Formation.N°Formation, Formation.RS,
Formation.Adr1,
Formation.Adr2, Formation.cp, Formation.Ville, TypeFormation.LibelleF,
ParticipantF.Nom, ParticipantF.Prénom, ParticipantF.Emploi FROM
(Formation INNER JOIN TypeFormation ON Formation.Type > > TypeFormation.Type) INNER JOIN ParticipantF ON Formation.N°Formation
= ParticipantF.N°Formation WHERE ((Formation.N°Formation)= " &
Me.N°Formation & ");"

Set Rst = Db.OpenRecordset(Strsql)
If Rst.BOF Then GoTo Exit_Sub
With W_App
.Visible = True
Do Until Rst.EOF
.Documents.Open ("C:convention.doc")
.ActiveDocument.Bookmarks("RS").Select
.Selection.InsertAfter Rst.Fields("RS")
.ActiveDocument.Bookmarks("ADR1").Select
.Selection.InsertAfter Nz(Rst.Fields("ADR1"), "")
.ActiveDocument.Bookmarks("ADR2").Select
.Selection.InsertAfter Nz(Rst.Fields("adr2"), "")
.ActiveDocument.Bookmarks("cp").Select
.Selection.InsertAfter Nz(Rst.Fields("cp"), "")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Nz(Rst.Fields("ville"), "")
.ActiveDocument.Bookmarks("IntituleF").Select
.Selection.InsertAfter Nz(Rst.Fields("LibelleF"), "")
.ActiveDocument.Bookmarks("nom1").Select
.Selection.InsertAfter Nz(Rst.Fields("nom"), "")
.ActiveDocument.Bookmarks("prenom1").Select
.Selection.InsertAfter Nz(Rst.Fields("prénom"), "")
.ActiveDocument.Bookmarks("fonction1").Select
.Selection.InsertAfter Nz(Rst.Fields("Emploi"), "")
.ActiveDocument.Bookmarks("nom2").Select
.Selection.InsertAfter Nz(Rst.Fields("nom2"), "")
.ActiveDocument.Bookmarks("prenom2").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom2"), "")
.ActiveDocument.Bookmarks("fonction2").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi2"), "")
.ActiveDocument.Bookmarks("nom3").Select
.Selection.InsertAfter Nz(Rst.Fields("nom3"), "")
.ActiveDocument.Bookmarks("prenom3").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom3"), "")
.ActiveDocument.Bookmarks("fonction3").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi3"), "")
.ActiveDocument.Bookmarks("nom4").Select
.Selection.InsertAfter Nz(Rst.Fields("nom4"), "")
.ActiveDocument.Bookmarks("prenom4").Select
.Selection.InsertAfter Nz(Rst.Fields("prenom4"), "")
.ActiveDocument.Bookmarks("fonction4").Select
.Selection.InsertAfter Nz(Rst.Fields("emploi4"), "")

.ActiveDocument.PrintPreview: Stop
.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rst.MoveNext
Loop
End With
Exit_Sub:
Rst.Close
Set Rst = Nothing
Set Db = Nothing
W_App.Quit
Set W_App = Nothing
End Sub

Peut-on afficher Nom2 , prenom2,...... dans le document word ?
Si on ne peut pas avoir c'est champs la sans une requete, peut on
faire un boucle a l'interieur de mon code qui me permeterais de
modififier la valeur des champs nom, prenom, emploi par mom1,
prenom1, fonction1, nom2, prenom2, fonction2....(signet de word).

Peux tu m'aiguiller?

Merci pour tes réponses.

Bonne apres-midi

@+

Yannick









Avatar
Eric
re,

Content pour toi d'avoir pu te mettre sur la voie car c'était juste une
ébauche de construction de la table. Bon, apparemment, tu vas finir ça
rapidement. Bravo

A+
Eric


"=?Utf-8?B?eWFubmljaw==?=" écrivait
news::

Eric, je te dois un grand merci

j' avance petit a petit et pour l'instant cela fonctionne

@+

Yannick




Yannick