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 :

Lire Word page par page


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Lire Word page par page
    Bonjour tous le monde,

    J'ai bien cherché dans le forum avec les mots clés (Word, vb.net), mais j'arrive pas à trouver la solution de mon problème.

    Mon problème : je veux lire le texte d'un document word page par page dans une Richtextbox avec VB.net.

    Si vous pouvez m'aider je vous serai reconnaissant.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    La "page" n'est pas une structure de l'arborescence du document. Il faut que tu lises ce qu'il y a entre deux sauts de page.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [VB.Net] Lire Word page par page
    Merci Médinoc pour ta réponse,

    Oui c'est ça ce que je veux, mais je sais pas comment faire, si vous avez une idée, et merci d'avance.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est pire que je pensais, vu qu'il n'y a probablement pas de saut de page lors que la transition d'une page à l'autre est "naturelle"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    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,

    Que veux tu faire exactement ?

    1)Prendre chaque page de ton document Word et l'afficher tel quel dans un RichTextBox ?

    Dans ce cas, tu peux itérer la collection Pages du Document Word et la transférer par copier-coller dans le RichTextBox. Tu peux aussi récupérer une page particulière par automation en partant de VB.net

    2) Ouvrir un document Word enregistré au format RTF dans le RichTextBox et afficher des pages qui ne sont plus les pages du document Word, mais des pages déterminées par la taille du RichTextBox ?

    Là, tu dois déterminer la longueur du texte affiché en fonction de l'espace disponible dans le RichTextBox. Ce n'est probablement pas impossible, mais pas mal plus compliqué.

    Ceci dit, je me demande si au lieu d'utiliser un RichTextBox, tu ne devrais pas utiliser un WebBrowser. Je ne suis pas sûr à 100 %; mais si tu mettais ton texte Word dans un WebBrowser, disons, à première vue, par copier-coller, le WebBrowser se débrouillerait mieux avec les pages que le RichTextBox.
    À 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.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [VB.Net] Lire Word page par page
    Merci clementmarcotte et Médinoc pour vos réponse,

    Mr. clementmarcotte je veux mettre chaque page de document dans un RichTextBox et mettre les boutons "Page Suivante" et "Page Précédente" qui ont change le contenu de la RichTextBox.

    Sinon je vais essayer la collection Pages du Document Word.

    Merci :-)

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour les amis,

    Après une longue recherche j'ai trouvé comment lire une page (la 1ère page), et le nombre de pages.

    1- Pour lire la page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Rng As Word.Range
     
    Rng = oWord.ActiveWindow.Selection.Bookmarks("\page").Range
     
    Rng.Select()
    Rng.Document.ActiveWindow.Selection.Copy()
    RichTextBox2.Text = oWord.ActiveWindow.Selection.Text
    2- Nombre de pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nbrPages = oDoc.CountNumberedItems()
    Ce que je cherche maintenant c'est : comment j’incrémente le range de la page pour la page suivante.

    Si vous avez des réponses je vous serais reconnaissant.
    Merci d'avance.

  8. #8
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    Cela n'est pas possible sous word...

    Car les indices de Range,Selection,Paragraphes & BookMark indiquent les positions des caracteres dans le Doc ...compte depuis l'origne...
    Le decoupage par page sert à la mise en page .Seul le numero est disponible au moyen de Document.ActiveWindow.Panes(1).Pages(indice).Breaks(1).PageIndex....tout dire!!!..
    Le nombre de caracteres par page est indisponible

    Mais cela n'est pas insurmontable car Range.GoTo(WD.WdGoToItem.wdGoToPage, , indexPage ) renvoie l'objet range de la page visee...
    Pour cela on l'appelle d'abord avec (index courant+1) de la page eclaireur qui suit la page en cours juste pour recuperer son index StartEclaireur.

    Ensuite on l'appelle avec (index courant) de page courante
    -Start =index est bon car position du 1er caractere du range dans le doc actuel..
    -End= index du Dernier caractere dans le doc actuel..est mauvais ..Diable!!!
    On le rectifie en lui assignant :
    -End=StartEclaireur...pour fixer les limites du range...

    code vb.net avec un :
    -btnLoad ,OpenDialog1,Richtextbox1,2 labels de pages et un btnDisplayPage
    de navigation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    Imports WD = Microsoft.Office.Interop.Word
    Public Class Form3
        Dim myFile As String
        Dim appWord As WD.Application
        Dim oDoc As WD.Document
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            RichTextBox1.WordWrap = False
            RichTextBox1.ScrollBars = ScrollBars.Both
            RichTextBox1.ZoomFactor = 0.5
        End Sub
     
        Private Sub btnLoadWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadWord.Click
            OpenFileDialog1.Filter = "files(*.word)|*.docx"
            myFile = String.Empty
            If OpenFileDialog1.ShowDialog = DialogResult.OK Then
                myFile = OpenFileDialog1.FileName
                If myFile.Length = 0 Then Return
     
                appWord = New WD.Application
                appWord.Visible = True
                oDoc = appWord.Documents.Open(myFile)
     
            End If
        End Sub
     
     
        Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuit.Click
            If oDoc IsNot Nothing Then
                oDoc.Close()
                oDoc = Nothing
     
            End If
            If appWord IsNot Nothing Then
                appWord.Quit()
                appWord = Nothing
     
            End If
            Me.Close()
        End Sub
        Dim indexPage As Integer = 1
        Dim currRng As WD.Range
        Dim nextRng As WD.Range
        Dim index As Integer
        Dim sel As WD.Selection
        Private Sub btnDisplayPage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayPage.Click
            If oDoc Is Nothing Then Return
            'NOMBRES DE PAGE ET NUMERO PAGE COURANT
            Label1.Text = oDoc.ActiveWindow.Panes(1).Pages.Count.ToString
            Label2.Text = indexPage.ToString
     
            'SE POSITIONNE SUR RANGE SITUE À indexPage + 1
            nextRng = oDoc.Range.GoTo(WD.WdGoToItem.wdGoToPage, , indexPage + 1)
     
     
            'LARGEUR DE LIGNE   RichTextBox  => CELLE DU DOC
            RichTextBox1.Clear()
            Dim pgsetup As WD.PageSetup = appWord.ActiveDocument.PageSetup
            Dim w As Single = pgsetup.PageWidth
            RichTextBox1.RightMargin = CInt(w)
     
     
            'SE REPOSITIONNE SUR LE RANGE COURANT
            currRng = oDoc.Range.GoTo(WD.WdGoToItem.wdGoToPage, , indexPage)
     
            'AJUSTE SON INDEX DE FIN(index depart est fourni gratuitement pae goto)
            currRng.End = nextRng.Start
            currRng.Select()
            RichTextBox1.Text = currRng.Text
            indexPage += 1
     
        End Sub
    End Class
    bon code.............

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup MABROUKI,

    C'est un Excellent travail, c'est ça ce que je veux exactement!
    un grand chapeau à vous MABROUKI.
    vraiment vous m'avez sauvé, je vous remercie une autre fois.

    Résolu !

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

Discussions similaires

  1. Ne pas lire plus d'une page par jour
    Par papa69 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/08/2011, 20h00
  2. Word enregistrement page par page
    Par metreaud dans le forum Word
    Réponses: 3
    Dernier message: 28/05/2008, 17h51
  3. [Tableaux] PB liens apres affichage page par page
    Par x2thez dans le forum Langage
    Réponses: 16
    Dernier message: 15/03/2006, 16h58
  4. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22
  5. [struts] afficher page par page une liste d'élément
    Par BurningPat dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/09/2005, 11h09

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