Partage
  • Partager sur Facebook
  • Partager sur Twitter

VB.Net Création ou modification d'un document Word

    3 juin 2013 à 17:07:18

    Bon bon, grâce au tutoriel de Hankerspace et à l'aide de quelques Zéros mon projet avance bien. J'en suis rendu à me poser la question des impressions de documents.

    En sachant que l'application va être utilisée par des petites entreprises et doit donc fournir des fiches administratives et des bons utiles.

    J'aimerais savoir comment soit créer un document propre à imprimer à partir de rien (ce qui semble vraiment long et difficile à mettre en page mais dans ce cas pas besoin de Word) soit modifier un document Word en remplissant des tableaux et des champs pré-formatés.

    Toute contribution peut être utile, j'ai trouvé des documentations peu explicite notamment sur le MSDN mais le manque de documentation, il y a juste l'entête des fonctions/propriétés, à propos de Microsoft.Office.Interop.Word rend le développement proche de l'impossible. De plus la mise en page risque une fois de plus d'être difficile puisque le fichier n'est pas mis en forme via une IHM.

    Je suis en train actuellement de regarder comment fonctionne cette bibliothèque ce qui est fort laborieux vu la gueule de la documentation mais si vous connaissez quelque chose de plus pratique, rapide ou joli  ça serait pas de refus.

    Edit : J'ai trouvé un exemple de code qui fournit les bases mais les problèmes que rencontre le codeur ne sont pas résolus, cela dit j'arrive pas à juste écrire dans un signet sans l'effacer (du coup je peux rien ajouter après ni m'y référencer par la suite).

    Dim oWord As Word.Application
    oWord = CreateObject("Word.Application")
    oWord.Documents.Open("C:\Users\PC\Documents\Projets\Sandbox\Sandbox\bin\Debug\test.doc")
    oWord.ActiveDocument.Bookmarks.Item("titre1").Range.Text = "toto" & vbCrLf
    oWord.ActiveDocument.Bookmarks.Item("titre1").Range.InsertParagraphAfter()
    
    oWord.ActiveDocument.Save()
    oWord.ActiveDocument.Close()
    oWord.Quit()

    L'ajout de text fonctionne mais l'insertion de paragraphe (ou l'affectation d'une autre chaine) me dit:

    L'exception COMException n'a pas été gérée.

    Le membre de la collection requis n'existe pas.

    -
    Edité par Drek 3 juin 2013 à 18:29:12

    • Partager sur Facebook
    • Partager sur Twitter
      4 juin 2013 à 11:27:06

      Bon après quelques explorations de plus, le problème que j'avais était lié au fonctionnement même des bookmarks et il est impossible de ne pas l'effacer lorsque qu'on le remplit. Il faut passer par une autre classe dans le namespace Microsoft.Office.Tools.Word.Bookmark cela dit ce n'est pas vraiment important.

      Comme je l'ai dit j'aimerais générer un document type facture, liste de commandes ... et finalement je vais utiliser des templates Word que je pourrais mettre en page plus facilement. Maintenant j'aurais à manipuler des tableaux dans beaucoup de cas (en fonction de ce que ma BDD contient) et ... pas moyen d'utiliser les tableaux.

      Problème :

      J'ai essayé plusieurs façon mais ça donne toujours un résultat complètement faussé avec un document mis en vrac juste pour ajouter des lignes à un tableau existant.

      'Mise en œuvre du document à partir d'un template
      Dim oWord As Word.Document = New Word.Document
      Dim WordApp As Word.Application = New Word.Application()
      oWord = WordApp.Documents.Add("C:\...\MonTemplate.dotx")
      oWord.Bookmarks.Item("Titre").Range.Select()
      WordApp.Selection.Text = "toto"
      'Jusque là, ça marche le titre est changé et la mise en page reste la même
      
      'Cette façon crée un tableau (qui à même pas le bon nombre de lignes) avant même le titre 
      'et met le bordel dans le reste qui se trouve dans une nouvelle page
      oWord.Tables.Item(1).Range.Select()
      WordApp.Selection.Rows.Add()
      '... Fait un certain nombre de fois
      WordApp.Selection.Rows.Add()
      
      
      ' Le tableau est bien redimensionné avec le bon nombre de ligne 
      'mais ça crée le même nombre de ligne en début de document et peut mettre le bazar si le tableau est trop grand oWord.Tables.Item(1).Rows.Add() '... oWord.Tables.Item(1).Rows.Add()

      Ensuite on sauve et ferme le doc et l'application Word.

      Questions :

      - Déjà, je trouve cela bizarre que la collection de tableau commence à l'indice 1 et le 0 n'existe pas, c'est normal ?

      - Quelle est la bonne méthode ? Une autre ? :-°

      - Quelqu'un a des bons liens susceptibles de m'être utiles  ou de l'expérience dans le domaine ?

      - Pourquoi c'est si chiant et mal foutu leur système de Selection/Range/Bookmark ?><

      - Pourquoi 42 ?

      -
      Edité par Drek 4 juin 2013 à 11:51:03

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2016 à 21:21:59

        I am a student I want to pass a image of Visual Basic to the Word and do not know how it

        -
        Edité par محمدمحمد 25 novembre 2016 à 21:22:50

        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2016 à 21:47:24

          Obiwan says "You want to go Home and ask Google"
          • Partager sur Facebook
          • Partager sur Twitter
          ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **

          VB.Net Création ou modification d'un 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