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

Word Discussion :

Publipostage Word Access complexe


Sujet :

Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Publipostage Word Access complexe
    Bonjour,

    Je recherche une solution à un problème de publipostage.
    Cela fait plus d'une semaine que je cherche sur ce forum, dans les tutos, et divers sites anglophones sans trouver ce que je cherche.
    Je n'ai jamais buté sur un problème comme ça aussi longtemps...

    Je cherche à générer des genres de rapports automatiquement.
    La source est actuellement une base de données MS Access mais ça peut évoluer vers de l'ODBC ou autre.
    Et je travaille sous Word 2016 actuellement.

    Déjà pour vous illustrer mon propos j'ai une base de donnée Accès comme suit :
    Client => ID (c'est un NumAuto), Nom, Prénom, ScanAutorisation1 (Objet OLE / Pièce Jointe), etc.

    Et pleins de tables liées :
    Materiel => ID, idClient, NomCommercial, Type, NuméroSerie, Descriptif, Fonctionnement, etc.

    Le publipostage à lieu sur cette table, et je ne cherche à générer un fichier Word pour une seule ligne Clients à la fois.

    J'ai des tableaux simples que je génères dans certains paragraphes en utilisant le MERGEFIELD idClient dans les requêtes insérées via Insertion -> QuickPart -> Champs -> BaseDeDonnées

    Mais voici les problématiques manquantes :
    1. Je dois répéter une section du document, d'environ une page, qui comprends des éléments fixes (titres hiérarchisés en tables des matières, textes types), et des champs de publipostage, mais qui ne doivent pas être issu de la table Clients depuis laquelle est issu le publipostage, mais d'un "SELECT * FROM Materiel WHERE idClient={L'iD client en cours}".
    2. Certains de ces paragraphes seront remplis par un champs MS Access texte enrichi Descriptif qui visiblement sors du HTML non interprété.
    3. Et enfin, je dois pouvoir embarquer des images dans la base de données MDB / ACCDB et les intégrer comme image dans Word. Il est impératif qu'il ne s'agisse pas d'un lien / d'une URL mais bien du contenu binaire du fichier dans la base de données (comme un BLOB dans MySQL). J'ai mis en exemple le champs ScanAutorisation1 dans l'exemple plus haut.


    Le document à générer se compose ainsi :
    Page 1 :
    Client.Nom Client.Prenom Adresse etc.
    Image de garde
    Version du document
    Date du document
    Auteur
    Vérifieur
    Validateur

    Page 2:
    Table des matières

    Page 3:
    Tableau des versions par page qui sera probablement réalisé manuellement

    Page 4:
    Des paragraphes types remplis par des champs de fusions avec des champs issu de la table Client, et des contenus de tables liées via le QuickPart champs BaseDeDonnées.

    Pages 5 et +
    FOREACH => Pour chaques matériels du client idClient (SELECT * FROM Materiels WHERE idClient={MERGEFIELD idClient}
    ____Titre_1 => Materiels.NomCommercial
    _____Paragraphe1____ = Materiels.Description où le champs doit être du texte enrichi rempli en formulaire dans access
    ____ Titre_2 => texte "Procédures A suivre"
    ____ Paragraphe2____ = Materiels.Procedures où le champs doit être du texte enrichi rempli en formulaire dans access
    ENDFOREACH

    Page N:
    Titre => texte simple
    Insertion Image Client.ScanAutorisation1

    Il ne s'agit pas d'un travail pour quelqu'un d'autre, mais j'ai ce vrai besoin pour moi même et générer ces rapports un peu particulier, dont le plan est imposé (pour un motif légal - l'administration ne rigole pas avec ça ^^). Et c'est un vrai besoin car je dois être en mesure d'archiver et générer ces documents à volonté.

    Je suis pas contre le VBA, ça fait longtemps que je n'y ai pas touché (depuis Office ... 97 ou 2003), donc j'ai pas mal à redécouvrir.
    Mais je me débrouille dans pas mal de langage, et je ne vois pas comment faire au plus simple. Visiblement FileMaker ne gère pas le texte mis en forme, et je ne pense pas qu'il pourrait générer de tels rapports. Même si vous pensez à d'autre technologies ou logiciels n'hésitez pas je suis preneur.

    Je sais coder en PHP, C#, jamais touché à VB.NET mais je devrais me débrouiller, Java, Python, FileMaker, j'ai Visual Studio Pro 2013, Netbeans, Eclipse, etc. Mais je ne vois pas comment générer un document avec une mise en forme particulière stricte dans ces langages (respecter un modèle, remplir des champs, répéter des sections de textes).

    En vous remerciant tous beaucoup d'avance,

    Cordialement,

    Ludovic

  2. #2
    Nouveau membre du Club Avatar de Picsonald
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 39
    Points
    39
    Par défaut
    Salut ludoprgrm,

    Tu parles de publipostage, une fonction présente sous Word, mais il semble que tu fait plutôt de la génération de fichier Word à la chaîne, en te basant sur un modèle préexistant (une coquille, un squelette).

    Je ne suis pas expert dans ce domaine, mais un des problèmes que tu rencontre semble être la difficulté à lier plusieurs tables SQL à ton fichier.
    Le point de départ ne consisterait-il pas a réaliser une vue, qui elle effectue une requête sur plusieurs tables, et qui recenserait l'intégralité des informations dont tu as besoin pour générer ton fichier Word ?
    Certes, cette vue contiendrait les champs nomClient, PrenomClient, DateDocument, Materiel1, Materiel2, Materiel33, MaterielN ce qui n'est conceptuellement pas sexy, mais il faut bien composer avec les faiblesses inhérente au fait de générer des fichier Word ?

    Voici des idées, des pistes pour les problématiques que tu rencontres :
    1. Si tu ne parviens pas a répéter une section du fichier Word, ne peux-tu pas alors appliquer cette section N fois, et masquer celles qui ne sont pas utiles ?
    La encore, je ne propose pas une solution élégante, et je "contourne" le problème plus que je ne le "résoud", mais bon...
    2. Si du code HTML vient se poser brutalement dans ton texte Word, alors raison de plus pour passer par un vue dans laquelle tu épureras la mise en forme au moyen d'une requête savante en faisant si besoin appel à une fonction. Si tu dois préserver la mise en forme, alors il va falloir forcément un algorithme de conversion.
    3. Concernant le dépôt d'images dans un fichier, ce n'est pas évident. Dans leur structure, les fichiers Word ne stockent pas les images dans "le fil du texte". Difficile donc d'aboutir à une génération propre si tu cherches à écrire directement dans le fichier.

    Tu devrais toutefois arriver à tes fin en cherchant du côté de la bibliothèque Interop.Word (si ton application fonctionne sur un poste ou Word est installé), ou alors en embarquant une bibliothèque externe.
    Personnellement, j'ai abandonné depuis longtemps de faire ces générations de fichier maison. J'utilise la bibliothèque payant Aspose.Word, dont tu pourras télécharger une DLL de démo sur leur site.
    Pas évident d’investir dans cette coûteuse librairie si tu interviens pour ton propre compte, j'en ai conscience... Mais c'est ça de tout vouloir faire avec du Microsoft ! Quelle manie !

    Blague à part, j'invite les autres membres du forums à donner un avis peut-être plus pro que le mien !
    Si tu ne trouves pas de réponses adaptées, poste sur le forum Stackoverflow mais recherche bien avant car, comme ici, ils n'aiment pas les doublons !

    Courage !

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Sauf horreur de ma part, le publipostage de Word ne peut utiliser qu'une seule table à la fois. Si tu peux créer une table temporaire sans trop de difficultés, tu peux faire ton publipostage à partir d'une table temporaire. Tu peux aussi insérer directement dans un document Word, (l'idéal serait que tu te fasses un modèle, mais ce n'est pas obligatoire) de champs de base de données.

    Ceci dit, tu peux toujours jeter un œil sur une méthode de publipostage conditionnel. Cela me semble se rapprocher de ton besoin.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 405
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 405
    Points : 16 245
    Points
    16 245
    Par défaut
    Bonjour

    On peut (?pouvait) utiliser une table de description et une table de données en cas d'absences de titres dans les données mais c'est tout.

    Comme suggéré par Picsonald, il faut souvent faire le publipostage à partir d'une vue (requête dans Access). Word permet de filtrer sur un client.

    Cependant vue la complexité de ton document et notamment du besoin d'images, il faudra du VBA.

    Voir aussi si une solution via un rapport Access ne serait pas plus gérable.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

Discussions similaires

  1. [WD-2003] Publipostage Word / Access avec plusieurs sources de données
    Par Benmarcel78 dans le forum Word
    Réponses: 3
    Dernier message: 29/11/2010, 20h30
  2. Problème publipostage word/Access
    Par samia21 dans le forum IHM
    Réponses: 5
    Dernier message: 05/06/2008, 11h44
  3. [DDE]Publipostage de Access à Word
    Par sylvere_co dans le forum VBA Access
    Réponses: 15
    Dernier message: 16/04/2007, 10h58
  4. publipostage word access
    Par nicoaix dans le forum Access
    Réponses: 1
    Dernier message: 15/02/2007, 18h41
  5. Réponses: 4
    Dernier message: 27/06/2006, 12h02

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