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 :

Publipostage programmé (Windev)


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Publipostage programmé (Windev)
    Bonjour,
    J'essaie d'interfacer une application ecrite en WinDev avec Word (Office XP) afin de réaliser un publipostage.
    Cette fonctionnalité se décompose en 2 modules, le premier étant le module de création du modèle avec des champs issus d'un dictionnaire, le 2eme étant l'exécution du publipostage.

    Dans le 1er module, l'insertion des champs de fusion se fait bien avec Fields.Add() et je n'ai pas eu trop de difficultés pour terminer le module.
    Mais il me reste un problème:
    Je n'ai trouvé aucun moyen de mémoriser la source de données directement dans le document Word. Ce qui m'arrangerait bien puisque l'appli est multi-users et je voudrais enregistrer le document dans un blob MySQL. Est-ce possible ou dois je enregistrer un autre document "données" au format Word ?
    Si je n'enregistre pas de liste au moment de la création du modèle, j'ai une erreur lors du publipostage puisque "le document n'est pas un document maitre de fusion".
    Est-ce possible de rendre le document "maître" au moment du publipostage seulement (cad constituer la source de données dynamiquement) ?

    Dans le 2eme module (l'exécution du publipostage) je rencontre 2 problèmes:
    1/ Je n'arrive pas à gérer des champs de type "case à cocher". J'ai vu pas mal de posts à ce sujet dans divers forums mais sans que les solutions proposées fonctionnent chez moi. Connaissez vous un moyen simple d'intégrer des case à cocher de "fusion" ?

    2/ Je voudrais que l'exécution se fasse en invisible. Mais lorsque je traite la propriété .Visible = false, le publipostage ne fonctionne plus ?!? (obligé de mettre en visible avec .Visible = true)

    Merci à tous

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Bonjour et bienvenue sur les forums Office de DVP.

    Peut-être une solution
    http://heureuxoli.developpez.com/off...ipostage/#L7-B

    Il deviendra alors un document principal de fusion.
    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 !

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    J'avais suivi ce tutoriel pour arriver à mes fins.
    Malheureusement, la constitution d'une liste nécessite qu'elle soit enregistrée (je l'ai enregistrée au format mdb). Et c'est bien là le problème puisque ce modèle de document de fusion sera utilisé par tous les utilisateurs de l'appli (appli multi-utilisateurs) et placé ou dans un blob ou sur une serveur réseau: donc la source de données ne peut pas exister, sauf en créant un deuxieme document word que je vais devoir gérer parallèlement. C'et bien ce que je voulais éviter !
    Peut-être connaissez vous une solution ?!
    Encore merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    désolé, ma réponse est incomplète:
    l'ajout de la source de données par programmation (MailMerge.OpenDataSource...) n'est pas envisageable (facilement en tous cas) puisque je travaille avec une base MySQL en accès natif; les clients n'ont pas de source de données (pas d'ODBC ou de OLE DB)
    Encore merci

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    tu mentionnes que tu vas utiliser un MDB pour tes données.

    Cette DB, elle peut toujours avoir le même nom et les mêmes tables ou requête, pourquoi ne pas lier la fusion à cette DB.

    Je ne connais pas toutes tes contraintes.
    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 !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Parce que il n'y a pas de source de données MySQL sur les postes clients.
    J'accède à la DB directement en natif (sans passer par ODBC ni OLE DB ni ADO)

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Sans ODBC, Word ne pourra pas attaquer les données.
    Une solution serait de passer par un fichier annexe style CSV.
    Et si tu donnes toujours le même nom au fichier.
    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 !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Je vais essayer d'exploiter la function .OpenDataSource au moment ou j'exécute le publipostage, cad enregistrer un fichier de données, puis faire .OpenDataSource juste avant le .Execute(0) ?!?
    J'espère que ca va marcher; mais je ne connais pas la syntaxe et les paramètre de .OpenDataSource: où puis je trouver une aide sur ces commandes ?
    Si ca ne fonctionne pas, ça implique que je gère parallèlement deux fichiers: le document maitre + fichier données; c'est ce que j'ai déjà fait avec un fichier word contenant les données (au lieu d'un fichier csv)
    Si ce fichier de données peut contenir n'importe quelle valeur ce n'est pas trop grave: ce fichier "bidon" servirait pour tous les publipostages, sans me soucier de ce qu'il y a dedans. De toute façon je génère un autre fichier de données au moment de l'exécution, que je supprime ensuite.
    D'où ma question: le fichier "données" initial doit-il nécessairement contenir les colonnes correspondant aux champs de fusion ?
    Encore merci pour tes réponses éclairées

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le fichier initial ne doit pas nécessairement contenir des données, mais il doit les avoir juste avant le publipostage.

    Si tu as un doute sur la syntaxe, tu peux toujours utiliser l'enregistreur de macro.
    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 !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour tes réponses, je vais essayer de mettre ça en oeuvre.
    Bonne continuation
    PH

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu rencontre des difficultés, n'hésite pas, mais sache que je ne connais absolument pas Windev.
    Déjà Word c'est limite.
    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 !

Discussions similaires

  1. [WD14] SQL dans un programme Windev
    Par philippe30 dans le forum WinDev
    Réponses: 9
    Dernier message: 15/12/2011, 18h58
  2. [WD12E] aide sur la programmation windev
    Par melchi dans le forum WinDev
    Réponses: 1
    Dernier message: 03/08/2009, 14h09
  3. [WD10] Requeteur dans un programme Windev
    Par philippe30 dans le forum WinDev
    Réponses: 2
    Dernier message: 05/11/2007, 21h22
  4. Réponses: 28
    Dernier message: 17/08/2006, 15h58

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