Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2007, 11h26   #1
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
Par défaut publipostage access / word

Bonjour, j'ai beau lire les posts sur le sujet, je ne trouve pas la solution.

Voici la situation :
une base access qui gere les contrats des clients.
ces contrats somt composés pour faire simple de plusieurs produits.
cela signifie dans que dans access , les données sont sous la forme :
contrat 1 - produit 1
contrat 1 - produit 2
contrat 2 - produit 3
contrat 2 - produit 4
...

Je souhaite faire un publipostage pour imprimer le grand nombre de contrat contenant chacun les produits.

Bien sur, je ne souhaite pas imprimer autant de fois le contrat qu'il y a de produit.

J'arrive pas a faire les ruptures !!!

Plusieurs difficultés : comment imprimer les contrats de maniere unique ?
comment mettre en tableau les différents produits pour chaque contrat ?

merci de votre aide.
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 11h49   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Un peu de lecture

http://heureuxoli.developpez.com/publipostage
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 11h52   #3
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
je l'ai lu mais malheureusement , j'ai pas su y trouver mon bonheur !!!

ma version d'access ne me permet pas en outre de faire fonctionner ton tuto sur les contrats , probleme qui ressemble un peu au mien ...
le temps passe et je recule ...

Citation:
Envoyé par Heureux-oli Voir le message
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 11h53   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Quelle est ta version d'Access.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 12h04   #5
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
access 2002 sp3
il semble manquer les références ms word 11.0 objet library.
c'est pour ca qu'il arrive pas a executer les script
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 12h27   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Tu dois mette la librairie Word de ta version et ça doit être la 10.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 12h37   #7
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
je la trouve pas .
mais c'est pas trop grave. je regarderais chez moi ...

par rapport au pb posé , ne penses tu pas qu'il soit finalement plus facile de gérer le pb directement sous access en générant une macro ou une requete qui va transformer mes lignes :

contrat1 - annexe 1- produit 1
contrat 1- annexe1 - produit 2
contrat 1- annexe 1- produit 2

en une ligne
contrat 1- annexe 1- pdt 1 - pdt 2 - pdt 3

comme cela , toutes les infos se situent sur le meme enregistrements et les données sont plus simples a publiposter ...
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 12h41   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Si je dis que c'est plus facile, je triche, je préfère manipuler les données en Access qu'en Word.

Mais on peut faire avec les deux.

Si tu cherche au niveau du publipostage, il y a plusieurs posts qui traitent de ce genre de publipostage.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 12h52   #9
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
sans mentir , je suis pas arrivé au bout de mes peines ...
surtout que la dead line . c'est ce soir ...
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 13h02   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Qu'est-ce qui te bloque pour l'instant ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 13h12   #11
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
en générant une macro ou une requete qui va transformer mes lignes :

contrat1 - annexe 1- produit 1
contrat 1- annexe1 - produit 2
contrat 1- annexe 1- produit 2

en une ligne
contrat 1- annexe 1- pdt 1 - pdt 2 - pdt 3


comment faire ?
créer une table temporaire par une requete sql.
mais comment faire pour envoyer pdt 1 - pdt 2 - pdt3 dans un meme champ ou en tout cas sur une meme ligne ?
il faut faire des boucles dans une fonction ?
en faisant des conditions sur le contenu des champs idcontrat et idannexe

je suis un niveau débutant depuis 1 semaine malheureusement
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 13h50   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Si tu transformes en

contrat 1- annexe 1- pdt 1 - pdt 2 - pdt 3
Tu dois connaître avant de fair equoi que ce soit le nombre maximum de produit que tu vas avoir par commande.


Combien de table ta base de données possède-t-elle ?

On devrait y arriver avec des recordset ou des requêtes multiples.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub GenerationDocument()
Dim rs1 as dao.recordset
Dim rs2 as dao.recordset
dim stSQL1 as String
dim stSQL2 as String
dim stArti as String
Dim stCom as string
Dim wApp as new Word.Application
 
 
stSQL1 = "Select contrat, annexe from maTable GroupBy contrat"
 
 
Set rs1 = CurrentDB.OpenRecordSet(stSQL1)
stCom = rs1.fields("commande") & " " & rs1.fields("annexe")
 
While Not rs1.EOF
    stSQL = "Select * from maTable where contrat = """ & rs1.fields("contrat") & """;"
    Set rs2 = currentdb.openrecordset(stSQL2)
    While not rs2.EOF
        stArti = rs2.fields("article") & vbCrLf
        rs2.MoveNext
    Wend
    rs2.close
rs1.movenext
wend
rs1.close
wApp.Documents.Add
With wApp.activeDocument.selection 
    .typetext stCom
    .typeText stArti
End With
wApp.visible = True
 
set rs1 = nothing
set rs2 = nothing
 
 
End sub
Voilà à quoi devrait ressembler ton code.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 14h39   #13
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
grand merci pout ton aide !!!

au maximum , 6 services dans chaque annexe.

voici ma structure de données .


Pièce jointe 20666
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 14h42   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Avec le code que j'ai mis, il n'y a pas de limite.

Essaie de faire avec et dis moi où tu coince.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 15h32   #15
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
Code :
1
2
3
4
5
6
7
8
While Not rs1.EOF
    stSQL = "Select * from temppublipostage where cdcontrat = """ & rs1.Fields("cdcontrat") & """;"
    Set rs2 = CurrentDb.OpenRecordset(stSQL2)
    While Not rs2.EOF
        stArti = rs2.Fields("cdservice") & vbCrLf
        rs2.MoveNext
    Wend
    rs2.Close
quand j'execute ta macro, il me dit erreur 3078 : le moteur n'a pas trouvé la base ou la requete.
c'est un pb de "" mais ou ca ?
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 16h06   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
C'est tout le code que tu dois mettre, l'erreur ne se situe pas là, mais à l'affectation de la variable stSQLX
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 16h31   #17
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
j'ai bien tout mis et remplacé qq champ :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
ub GenerationDocument()
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim stSQL1 As String
Dim stSQL2 As String
Dim stArti As String
Dim stCom As String
Dim wApp As New Word.Application
 
 
stSQL1 = "SELECT temppublipostage.cdcontrat, temppublipostage.cdannexe FROM temppublipostage GROUP BY temppublipostage.cdcontrat, temppublipostage.cdannexe;"
 
 
Set rs1 = CurrentDb.OpenRecordset(stSQL1)
stCom = rs1.Fields("cdcontrat") & " " & rs1.Fields("cdannexe")
 
While Not rs1.EOF
    stSQL = "Select * from temppublipostage where cdcontrat = """ & rs1.Fields("cdcontrat") & """;"
    Set rs2 = CurrentDb.OpenRecordset(stSQL2)
    While Not rs2.EOF
        stArti = rs2.Fields("cdservice") & vbCrLf
        rs2.MoveNext
    Wend
    rs2.Close
rs1.MoveNext
Wend
rs1.Close
wApp.Documents.Add
With wApp.ActiveDocument.Selection
    .TypeText stCom
    .TypeText stArti
End With
wApp.Visible = True
 
Set rs1 = Nothing
Set rs2 = Nothing
 
 
End Sub

mais quand je l'exécute, il repere un probleme sur la ligne
Set rs2 = CurrentDb.OpenRecordset(stSQL2)

la valeur de stSQL2 et "".
c'est donc au niveau de la ligne du dessus l'erreur ?

stSQL = "Select * from temppublipostage where cdcontrat = """ & rs1.Fields("cdcontrat") & """;"
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 16h45   #18
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Lorsque tu affecte une valeur, tu le fais à stSQL et tu oublies le 2.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 17h06   #19
Membre régulier
 
Inscription : octobre 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 219
Points : 77
Points : 77
grand merci pour ton aide.

je crois que je vais avoir du boulot ce week end ...

bon we.

guillaume
gui-llaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 17h08   #20
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 356
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 356
Points : 29 271
Points : 29 271
Reviens quand tu veux.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web