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

VB.NET Discussion :

Appel d'un modèle de document Word par le code VB.net et insertion automatique des champs d'une DGV [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut Appel d'un modèle de document Word par le code VB.net et insertion automatique des champs d'une DGV
    Bonjour,
    J'ai créé un modèle de document dans Word avec des champs que je souhaite relier à une BDD.
    Je souhaiterais appeler ce document par le code dans VB.net et renseigner directement les champs du document Word à partir d'une DatagridView.
    Mais pour l'instant je ne sais pas trop par où commencer.
    Quelqu'un a-t-il une idée ou un exemple de code à me donner ?
    Merci d'avance pour votre aide

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Vite fait comme cela je ne sais pas trop. Mais, il y a probablement plus d'une façon de procéder.

    1) Tu peux créer un modèle Word avec les macros dans le modèle et lancer les macros à partir de VB.net

    2) Tu peux agir directement sur les objets Word à partir de VB.net

    Ceci dit, tu dois commencer par le commencement et te poser deux questions:

    - Ton DatagridView est alimenté comment ? À la mitaine dans le code ou directement d'une banque de données ?
    - Ton document Word est-il lié directement à un banque de données particulières.

    Une fois que tu as répondu à ces deux questions, voici la troisième. Pourquoi pas un banal publipostage dans Word ?
    -

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut
    Merci pour ta réponse clementmarcotte,
    Pour répondre à tes questions :
    • Ma DGV est alimentée par un DataSet issu d'une BDD SQL
    • Mon document Word n'est lié à acune BDD pour l'instant


    Ce que je voudrais faire c'est après avoir sélectionné une ligne dans ma DGV de pouvoir choisir un modèle de document Word préparé (j'ai plusieurs modèles en fonction du type de document nécessaire) pour recevoir les données issue de la ligne sélectionnée sur la DGV et ensuite l'imprimer sans autre intervention.
    Problème je suis un peu débutant et je ne sais pas par où commencer ...
    Ce que je souhaiterais c'est un exemple de code qui me permettrait de comprendre comment faire et ensuite de l'adapter avec mon propre code, j'ai appris tout ce que je sais de VB.net pour l'instant comme ça

  4. #4
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas de code, ni de BD pour cela sous la main, et personnellement je ne vois pas l'intérêt. Et les règles de la maison ne sont pas vraiment en faveur du code gratuit clef en main.

    Tu peux alimenter ton document Word en puisant directement dans ta base SQL, soit en passant par le publipostage avec une requête SQL. C'est possible pour un seul document et aucune obligation que le document en question ne soit une lettre.

    Tu peux aussi mettre directement dans ton document Word des champs de BD.

    Si ton idée c'est de prendre une ligne d'un DGV et de foutre chaque donnée de ta ligne à un endroit précis dans un document Word inconnu, là, cela dépend de ton document. Si tu as des signets présents aux bons endroits de ton document, et que tu connais les noms des signets, c'est une affaire de rien d'itérer les colonnes de ta ligne et de mettre les données à côté, à l'intérieur ou à la place des signets, pour autant que l'on connaisse l'ABC de la manipulation des signets avec VBA Word.

    Si tu ne connais pas le nom de tes signets, ou que tu dois les insérer par programmation, là, tu dois maîtriser VB.net et VBA pour Word. Cela en fait beaucoup en même temps.

    Tu peux aussi avec VB.net utiliser directement les objets du publipostage de Word par automation, et leur transmettre les données de ton DGV...

    Tu peux toujours fouiller par là. Il y a quelques exemples de manipulation d'Excel et de Word avec VB.net

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut
    Merci pour ta réponse mais tout ça ne m'aide pas beaucoup, j'ai cherché partout sur le net mais n'ai pas trouvé ...
    Alors vu le peu de réponses que j'ai obtenues, ce que je croyais assez simple à réaliser ne semble pas aussi aisé.

    Je vais donc expliciter un peu ce que je souhaite, d'où je pars et où je voudrais arriver :
    • Je suis parti de rien ou presque il y a 9 mois, j'ai donc appris à coder en VB.NET (VB 2010 express) à partir du cours de Philippe Lasserre et d'aides nombreuses qui m'ont été fournies sur ce forum. Je ne suis donc plus tout à fait un novice mais j'ai bien conscience qu'il me manque encore plein de chose. C'est en faisant qu'on apprend ...
    • J'ai donc créé une appli en VB.NET (en VB 2100 express) qui gère une BDD SQL server 2008 R2 avec plusieurs tables.
    • J'ai déjà réussi dernièrement à faire des exports d'une DataGridView vers Excel et Pdf (en utilisant iTextSharp) avec de l'aide trouvée sur ce forum.
    • Aujourd'hui je voudrais faire le lien entre une DataGridView contenant un fichier de contacts et une lettre-type dans Word en faisant glisser les coordonnées du contact (Nom, adresse) sélectionné dans la DataGridView dans des champs prévus à cet effet dans le document Word. Il y a plein d'exemples sur différents forums pour les export Excel ou Pdf mais pas pour Word.


    Donc voilà ce que je voudrais faire dans l'ordre :
    • Afficher la liste des contacts dans une DataGridView (ça c'est déjà fait)
    • Cliquer sur l'un des contacts pour le sélectionner
    • Cliquer sur un objet (bouton par exemple) qui ouvre une boîte de dialogue me permettant de choisir la lettre-type que je souhaite et ouvrir le document Word (ça c'est fait)
    • Cliquer sur un autre objet (bouton) pour faire glisser les données Nom et adresse de la ligne sélectionnée dans la DataGridView dans les champs prévus à cet effet dans le document Word. (c'est ça qu'il reste à faire)


    D'où mes questions :
    • Que dois-je importer au début de mon projet (par exemple pour Excel : Imports Excel = Microsoft.Office.Interop.Excel) ?
    • Comment saisir les champs appropriés dans le document word ?
    • Comment faire glisser les données requises de la DatagridView vers les champs du document Word ?

    Je ne cherche pas un code tout fait mais comprendre comment faire avec quelques exemples de code qui me permettent de comprendre la logique
    Encore merci à tous ceux qui prendront le temps de me répondre

  6. #6
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Citation Envoyé par Feliperennes Voir le message
    Merci pour ta réponse mais tout ça ne m'aide pas beaucoup, j'ai cherché partout sur le net mais n'ai pas trouvé ...[*]Aujourd'hui je voudrais faire le lien entre une DataGridView contenant un fichier de contacts et une lettre-type dans Word en faisant glisser les coordonnées du contact (Nom, adresse) sélectionné dans la DataGridView dans des champs prévus à cet effet dans le document Word. Il y a plein d'exemples sur différents forums pour les export Excel ou Pdf mais pas pour Word.
    [*]Cliquer sur un autre objet (bouton) pour faire glisser les données Nom et adresse de la ligne sélectionnée dans la DataGridView dans les champs prévus à cet effet dans le document Word. (c'est ça qu'il reste à faire)

    Le plus simple c'est probablement ce que je t'ai déjà dit. Tu mets manuellement des signets dans ton modèle et tu boucles les bonnes colonnes de la bonne ligne de ton DGV pour remplacer tes signets. Tant que tu n'enregistres pas ton modèle en modèle à partir de VB.net, tu ne perds pas tes champs


    Que dois-je importer au début de mon projet (par exemple pour Excel : Imports Excel = Microsoft.Office.Interop.Excel) ?
    Au moins Microsoft.office.interop.word

    [*]Comment saisir les champs appropriés dans le document word ?
    Le plus simple c'est de mettre tes signets manuellement dans tes modèles. Cela peut aussi se faire par VBA, mais cela va être l'enfer, juste pour atteindre l'endroit où tu vas vouloir mettre chaque signet.

    [*]Comment faire glisser les données requises de la DatagridView vers les champs du document Word ?
    Cela resterait à prouver, mais je doute que tu puisses faire du glisser-déposer entre VB.net et Word.

    Donc c'est là que le fun commence.

    -Soit que tu connais les noms exacts de tes champs et tu as besoin d'une seule boucle qui prend les valeurs de ton DGV et les mets à la place des res signets.

    -Soit que tu te crées un système pour faire correspondre tes colonnes de DGV et tes noms de signets. Cela te prend au moins deux boucles imbriquées. Une boucle pour les valeurs de ton DGV et une boucle sur la collection bookmarks de ton document Word avec un subtil système de comparaison de noms et d'affectations en conséquence

    Puisque tu dis avoir piloté Excel à partir de VB.net, tu peux t'inspirer de ces "équivalences"

    L'objet Workbook d'Excel est approximativement un objet Document dans Word. Même adaptation pour Workbooks, activeworkbook et thisworkbook

    Ceci dit les objets Selection et Range de Word, s'appliquent à du texte et pas à des cellules.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Generer document word par rapport rdlc?
    Par Pingva dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/03/2009, 09h30
  2. Generer document word par rapport rdlc?
    Par Pingva dans le forum ASP
    Réponses: 0
    Dernier message: 12/03/2009, 11h05
  3. Envoi document Word par Outlook
    Par xcbilx dans le forum VBA Word
    Réponses: 1
    Dernier message: 17/10/2008, 21h13
  4. Réponses: 2
    Dernier message: 07/06/2006, 09h50
  5. Réponses: 11
    Dernier message: 26/04/2005, 09h23

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