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 22/08/2006, 09h31   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Par défaut [vba/word] connection mysql et publipostage

Bonjour à tous !

Voilà j'ai besoin d'aide sur un projet en cours.

J'explique:
Je réalise un intranet dans lequel (entre autre) je donne la possibilité de faire du publipostage.
fonctionnement :
Donc j'ai un formulaire .php et un autre fichier.php qui traite le formulaire et ecrit la requete dans un fichier .txt.
Ensuite j'affiche des liens sur une page web afin d'ouvrir les documents word voulu( etiquettes, enveloppes, lettres).
là où j'ai besoin d'aide:
Lors de l'ouverture de chaque fichier il faut que celui-ci execute "une procedure d'evenement".
La procedure -> doit faire la connection a la base de donnee mysql et executer la requete du fichier .txt.

Ce que je n'arrive pas a comprendre c'est comment je dis a word qu'il s'agit d'un publipostage et que la source de donnée est ma base de type Mysql???

je ne sais pas si les explications sont assez claires. Mais j'espere que vous pourrez m'apporter de l'aide car je bloc net en ce moment.

Merci !
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 10h31   #2
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Pour le moment j'arrive à mettre en place une procedure d'événement lors de l'ouverture.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
Private Sub Document_Open()
 
Set doc = ActiveDocument
 
doc.MailMerge.MainDocumentType = wdFormLetters
 
If doc.MailMerge.MainDocumentType = wdNotAMergeDocument Then
    StatusBar = "Ce document n'assure pas le publipostage"
Else
    StatusBar = "Ce document de publipostage selon vos criteres"
End If
 
End Sub
pour le moment ceci n'est qu'un test !

mais bon je n'avance po trop....
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 15h20   #3
Membre à l'essai
 
Inscription : juin 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 105
Points : 24
Points : 24
Citation:
Envoyé par lecail65
Pour le moment j'arrive à mettre en place une procedure d'événement lors de l'ouverture.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
Private Sub Document_Open()
 
Set doc = ActiveDocument
 
doc.MailMerge.MainDocumentType = wdFormLetters
 
If doc.MailMerge.MainDocumentType = wdNotAMergeDocument Then
    StatusBar = "Ce document n'assure pas le publipostage"
Else
    StatusBar = "Ce document de publipostage selon vos criteres"
End If
 
End Sub
pour le moment ceci n'est qu'un test !

mais bon je n'avance po trop....
ton mysql est coté client ou coté serveur?
minette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 15h50   #4
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
coté serveur je crois !

mais le pb se situe plus au niveau de la fusion car je ne sais pas du tout comment m'y prendre ??
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 16h16   #5
Membre à l'essai
 
Inscription : juin 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 105
Points : 24
Points : 24
Citation:
Envoyé par lecail65
coté serveur je crois !

mais le pb se situe plus au niveau de la fusion car je ne sais pas du tout comment m'y prendre ??
ok puisque tu dis que tu utilise vba alor enregistre une macro et tu verra
minette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 16h31   #6
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Ah oui effectivment je ne savais pas que l'on pouvez faire comme ca !
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 16h44   #7
Membre à l'essai
 
Inscription : juin 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 105
Points : 24
Points : 24
Citation:
Envoyé par lecail65
Ah oui effectivment je ne savais pas que l'on pouvez faire comme ca !

cool alors pense a mettre resolu si tu as eu ton bonheur, ça aide les modos et admins aussi les autres
minette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2006, 10h05   #8
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Oui j'aimerai bien mettre résolu ! mais j'en suis très loin encore ... grrrrrrr


Voilà le souci:

Afin de connaitre le code généré par le publipostage je crée effectivment une macro. Je fais donc les manipulations mais là un pb se pause. Car pour une base de donnée Mysql le seul moyen de communiquer et donc d'ouvrir la source de donées c'est de passer par MS Query !!!

Donc je fais quand meme la manipulation avec ms query, qui génére une requete. Voici donc le code abtenu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
' Macro1 Macro
' Macro enregistrée le 24/08/2006 
'
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:="", ConfirmConversions:= _
    False, ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
    PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
    WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
    Connection:= _
    "DATABASE=contact;DSN=test;OPTION=0;PWD=monpwd;PORT=3306;SERVER=localhost;UID=root" _
    , SQLStatement:= _
    "SELECT contact_0.civilite_contact, contact_0.nom_contact, contact_0.prenom_contact, contact_0.fonction_contact, contact_0.titre_contact, contact_0.ville_contact, contact_0.cp_contact, contact_0.adresse_contact, contact_0.portable_contact, contact_0.fixe_c" _
    , SQLStatement1:= _
    "ontact, contact_0.mail  FROM contact_du_gt.contact contact_0  WHERE (contact_0.fonction_contact Like 'm%')  ORDER BY contact_0.nom_contact, contact_0.prenom_contact" _
    , SubType:=wdMergeSubTypeOther
De là je me suis dis quand reprenant le meme code et en faisant les ameliorations adéquates je pourrai automatisé le processus ! Mais en fait que nini !!!

voila le code qui récupere le fichier .txt l'ajoute a une variable. puis fait la connection (devrai faire plutot) et la fusion (devrai tjrs).

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
 
 
Public Function fichier_texte()
 
Dim requete As String
 
Open "C:\Program Files\EasyPHP1-8\www\zone_test_Word\la_requete.txt" For Input As #1
  While EOF(1) = False
    Line Input #1, LigneSuivante
    requete = LigneSuivante
  Wend
Close #1
 
fichier_texte = requete
 
End Function
 
 
Private Sub Document_Open()
 
'on recupere la requete
Dim requete_puplipost As String
 
requete_publipost = fichier_texte()
 
'MsgBox requete_publipost
 
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:="", ConfirmConversions:= _
    False, ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
    PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
    WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
    Connection:= _
    "DATABASE=contact;DSN=test;OPTION=0;PWD=monpwd;PORT=3306;SERVER=localhost;UID=root" _
    , SQLStatement:= requete_publipost _
    , SubType:=wdMergeSubTypeOther

Donc voilà ! je bloque ici et ca commence à saou...é !lol

Help me please !!!
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 00h48   #9
Membre à l'essai
 
Inscription : juin 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 105
Points : 24
Points : 24
Citation:
Envoyé par lecail65
Oui j'aimerai bien mettre résolu ! mais j'en suis très loin encore ... grrrrrrr


Voilà le souci:

Afin de connaitre le code généré par le publipostage je crée effectivment une macro. Je fais donc les manipulations mais là un pb se pause. Car pour une base de donnée Mysql le seul moyen de communiquer et donc d'ouvrir la source de donées c'est de passer par MS Query !!!

Donc je fais quand meme la manipulation avec ms query, qui génére une requete. Voici donc le code abtenu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
' Macro1 Macro
' Macro enregistrée le 24/08/2006 
'
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:="", ConfirmConversions:= _
    False, ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
    PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
    WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
    Connection:= _
    "DATABASE=contact;DSN=test;OPTION=0;PWD=monpwd;PORT=3306;SERVER=localhost;UID=root" _
    , SQLStatement:= _
    "SELECT contact_0.civilite_contact, contact_0.nom_contact, contact_0.prenom_contact, contact_0.fonction_contact, contact_0.titre_contact, contact_0.ville_contact, contact_0.cp_contact, contact_0.adresse_contact, contact_0.portable_contact, contact_0.fixe_c" _
    , SQLStatement1:= _
    "ontact, contact_0.mail  FROM contact_du_gt.contact contact_0  WHERE (contact_0.fonction_contact Like 'm%')  ORDER BY contact_0.nom_contact, contact_0.prenom_contact" _
    , SubType:=wdMergeSubTypeOther
De là je me suis dis quand reprenant le meme code et en faisant les ameliorations adéquates je pourrai automatisé le processus ! Mais en fait que nini !!!

voila le code qui récupere le fichier .txt l'ajoute a une variable. puis fait la connection (devrai faire plutot) et la fusion (devrai tjrs).

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
 
 
Public Function fichier_texte()
 
Dim requete As String
 
Open "C:\Program Files\EasyPHP1-8\www\zone_test_Word\la_requete.txt" For Input As #1
  While EOF(1) = False
    Line Input #1, LigneSuivante
    requete = LigneSuivante
  Wend
Close #1
 
fichier_texte = requete
 
End Function
 
 
Private Sub Document_Open()
 
'on recupere la requete
Dim requete_puplipost As String
 
requete_publipost = fichier_texte()
 
'MsgBox requete_publipost
 
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:="", ConfirmConversions:= _
    False, ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
    PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
    WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
    Connection:= _
    "DATABASE=contact;DSN=test;OPTION=0;PWD=monpwd;PORT=3306;SERVER=localhost;UID=root" _
    , SQLStatement:= requete_publipost _
    , SubType:=wdMergeSubTypeOther

Donc voilà ! je bloque ici et ca commence à saou...é !lol

Help me please !!!
Excuse moi j'etais bcp absente ,en ce moment je suis tres prise
j'ai pa bien compris ton code mais quand on peut pas atteindre quelques chose on utilise un autre chemin histoire de voir !!

Essai de voir si tu peux recupérer tes donnees mysql dans un fichier excel!
suffit d'utiliser excel pour te connecter en http sur un script qui fai la requete vers la BDD mysql.
Apre tu utilise le fichier excel com source de data , tout ça automatiquement implementé en code.

Le soucis avec le truc machin querry il utilise des truc speciaux dans sa chaine de connection , j'ai oublié regarde les specs dans la msdn en rapport.
Sinon si tu veu poursuivre sur ta lancee explique mieu et pose des questions si ça avance pas!!!

a bientot et bon appeti en dev
minette est dé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 07h47.


 
 
 
 
Partenaires

Hébergement Web