Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire vb et document word

Sujet résolu
    27 août 2011 à 11:12:01

    Bonjour à tous ,

    J'aurai voulu savoir si c'était possible de completer un formulaire dans une application vb et ensuite de prendre le texte qui se trouve dans les textbox afin de les placer dans des endroit précis d'un document word pré-rempli ?

    Si oui, quel est la marche à suivre ?

    Merci d'avance pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      27 août 2011 à 12:41:05

      Je me permets de reprendre en partie ce que j'avais dit dans un post précédent ^^

      Tu peux te créer un modèle de document word qui contiendra toutes tes données statiques ainsi que des repère du type {Nom} par exemple qui représenteront l'endroit où insérer les données dynamiques (donc celles qui viennent de ton formulaire VB).

      Ensuite, pour créer ton document, tu utilises l'interop Word pour l'ouvrir et aller remplacer les textes du type {variable} dedans.

      Une fois que ce dernier est bien rempli, tu n'as plus qu'à appeler la méthode de l'interop pour le sauvegarder. :)
      • Partager sur Facebook
      • Partager sur Twitter
        27 août 2011 à 22:20:03

        Merci pour votre réponse.

        J'avais déjà créer mon document word , cependant je ne connais pas la méthode de l'interop word et je ne trouve pas de tuto spécifique.
        Si vous pouviez m'expliquer ce serait sympa car je ne comprend pas trop et tout ce que j'essaie ne fonctionne pas.

        merci d'avance
        • Partager sur Facebook
        • Partager sur Twitter
          28 août 2011 à 0:56:59

          Je suis désolé mais je vais être obligé de te donner un exemple en C#, je connais trop mal la syntaxe VB.NET.

          Alors pour effectuer ce que tu souhaites j'ai créé une simple form qui permet de récupérer les informations et qui ressemble à ça.

          Image utilisateur


          Rien de compliqué ^^ . J'ai aussi un document Word qui me servira de modèle et qui contient ceci.
          Nom : {nom}
          Prénom : {prenom}
          Ville : {ville}

          Ensuite, j'ai mis un événement sur le clique du bouton qui va lancer toute la procédure que voici (attention il ne faut pas oublié d'ajouter une référence vers Microsoft.Office.Interop.Word et de choisir la version 14 si tu es sous word 2010 ou la version 12 si tu es sous 2007).
          A noter également que j'ai fait un alias vers le namespace Microsoft.Office.Interop.Word avec tout simplement Word

          private void button1_Click(object sender, EventArgs e)
          {
              // Tu créés un objet de type Application
              Word.Application application = new Word.Application();
          
              // Tu ouvre ton document word qui sert de modèle
              Word.Document document = application.Documents.Open(@"C:\exempleInterop.docx");
          
              // Puis on remplace chaque terme de la forme {variable}
              // dans le document avec les données du formulaire
              SearcheAndReplace("{nom}", nomTextBox.Text, application);
              SearcheAndReplace("{prenom}", prenomTextBox.Text, application);
              SearcheAndReplace("{ville}", villeTextBox.Text, application);
          
              // On enregistre le document ainsi modifié
              document.SaveAs2(@"C:\documentFromCode.docx");
          }
          
          private void SearcheAndReplace(string toReplace, string replacementString, Word.Application applicationWhereToReplace)
          {
              // On créer un objet find et on le paramêtre comme requis
              // pour effectuer le rechercher / remplacer désiré
              Word.Find find = applicationWhereToReplace.Selection.Find;
              find.ClearFormatting();
              find.Text = toReplace;
              find.Replacement.ClearFormatting();
              find.Replacement.Text = replacementString;
          
              // Enfin, on execute la commande de remplacement en spécifiant que l'on veut tout remplacer
              object replaceAll = Word.WdReplace.wdReplaceAll;
              find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                  ref replaceAll, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
          }
          


          Je te la donne en français si tu n'arrives pas à lire la syntaxe C# :
          • J'instancie un objet de type Application avec le constructeur par défaut.
          • J'ouvre mon document en utilisant la méthode Open de la propriété Documents de l'application créé juste avant.
          • J'utilise une petite méthode perso qui va faire la fonction de recherche / remplacement.

          Pour la petite méthode perso justement, voici ce qu'elle fait (il est important de faire pareil sous peine d'avoir des résultats bizarres.
          • Je récupère un objet Find depuis l'application
          • J'utilise la méthode ClearFormatting() indispensable pour le bon fonctionnement du remplacement
          • Je définis le texte à remplacer (nos variables de type {nom}, {prenom}, etc..)
          • J'utilise la méthode ClearFormatting() sur le texte de remplacement
          • Je définit le texte qui sera le remplaçant.
          • Enfin, j'exécute la méthode recherche et remplacement en spécifiant que l'on veut tout remplacer (les Type.Missing) sont obligatoires pour la méthode car on ne souhaite pas renseigner ces informations

          J'espère que c'est assez clair et que tu pourras le traduire en VB.NET ;)
          • Partager sur Facebook
          • Partager sur Twitter
            28 août 2011 à 10:23:58

            Merci beaucoup pour toutes tes explications.
            J'ai compris ce que tu m'expliques,reste le plus dure traduire du C# que je ne connais pas du tout en vb.

            Je reviens si j'ai des soucis....
            • Partager sur Facebook
            • Partager sur Twitter
              28 août 2011 à 11:48:49

              Sinon tu peux utiliser un convertisseur C# -> VB.NET, si ça n'est pas parfait ça te permettra surement de dégrossir la chose. :)
              • Partager sur Facebook
              • Partager sur Twitter

              Formulaire vb et document word

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown