IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

[vba/word] connection mysql et publipostage


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    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 !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par lecail65
    Pour le moment j'arrive à mettre en place une procedure d'événement lors de l'ouverture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    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 ??

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    Ah oui effectivment je ne savais pas que l'on pouvez faire comme ca !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. Vba Excel connecté à Mysql erreur 94 utilisation incorrect de nul
    Par belierone dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/04/2015, 22h05
  2. Réponses: 5
    Dernier message: 26/04/2011, 18h53
  3. Publipostage, liaison VBA -> Word
    Par Aboshan441 dans le forum Word
    Réponses: 8
    Dernier message: 14/09/2007, 08h48
  4. [VBA-Word] Fusion & Publipostage
    Par damsmut dans le forum VBA Word
    Réponses: 15
    Dernier message: 22/06/2007, 19h44
  5. [VB6][VBA][WORD 2003] Fusion - Publipostage.
    Par L.nico dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/07/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo