locked
Retraitement d'un document Word

    Question

  • Bonjour,

    Sous VS 2010 Professionnel, est-il possible de "retraiter" un document Word 2007 avec des procédures VB ou C# ?

    Par "retraiter" je veux dire lire ce document et y retrouver par exemple un certains nombre de mots.

    Comment faire ? Où trouver des exemples et la doc explicative ?

     

    Merci de vos réponses.

     


    Alain
    Tuesday, August 31, 2010 3:19 PM

All replies

  • Bonjour,

     

    Un document Word sera toujours composé de Word, de Sentences... et quelque soit le langage, le modèle objet de Word reste le même.

    Donc dans une boucle For/Next, vous pouvez parcourir l'ensemble des paragraphes et d'aboutir à vos fins.


    Argy
    Friday, September 17, 2010 1:13 PM
  • Merci beaucoup pour cette réponse qui m'éclaire. Mais où peut-on trouver un petit exemple de code de retraitement (lecture-écriture) de document Word ?

    Est-ce la même chose pour Excel ?

    Cordialement

     


    Alain
    Friday, September 17, 2010 1:51 PM
  • Bien en VBA, cela donne par exemple :

    Option Explicit
    
    Private Sub Test()
    Dim strWordToFind                   As String
    Dim lngCount                      As Long
    
    Const CASE_SENSITIVE                  As Integer = 0
    Const NO_CASE_SENSITIVE                As Integer = 1
    
    
      strWordToFind = InputBox$("Quel mot cherchez-vous dans le document ?", "Mot à retrouver")
      If Len(strWordToFind) Then
        If FindWords(strWordToFind, CASE_SENSITIVE, lngCount) Then
          MsgBox "Il y a " & IIf(lngCount = 1, "1 mot", Trim$(Str(lngCount))) & " mots trouvés" & " dans ce document..."
        Else
          MsgBox "Aucune occurence ne correspond au mot " & strWordToFind, vbInformation
        End If
      End If
    End Sub
    
    Private Function FindWords(ByVal WhatWord As String, ByVal MatchCase As Integer, ByRef Count As Long) As Boolean
    Dim oDoc                        As Word.Document
    Dim W                         As Object
    
      Set oDoc = ActiveDocument
      For Each W In oDoc.Words
        If StrComp(Trim$(W), WhatWord, MatchCase) = 0 Then
          Count = Count + 1
        End If
      Next
      FindWords = (Count > 1)<br/>  Set oDoc = Nothing 'Not in VB.net
    End Function
    
    
    

     N'ayant pas VS 2010, je ne peux vous transposer avec du .net

    Il vous appartient de réécrire la procédure avec les fonctions qui s'imposent e.g.

    Trim$(Str(lngCount)))  vs lngCount.ToString("N") par exemple

    Mais grossièrement, il n'y a pas de grosses différences hormi l'initialisation de l'objet document (Interop) notamment...

     


    Argy
    Friday, September 17, 2010 2:37 PM
  • Merci beaucoup Argy pour votre aide. Cette procédure m'apporte des informations. Dommage qu'elle ne soit pas en .NET mais c'est déja ça !

    Est-il concevable d'écrire un programme qui ouvre un document Office pour travailler dessus ou, au contraire, ce programme doit-il être intégré au document Office lui-même ?

    Où puis-je trouver la doc concernant l'utilisation d'Office avec VS ?

    Merci

     


    Alain
    Friday, September 17, 2010 9:00 PM
  • La connaissance de VBA est indispensable pour faire du .net (C# ou VB).

    Les documents, classeurs et présentation auront toujours leur propriétés et méthodes quel que soit le langage...

    Dans un premier temps, je vous conseille de vous entrrainer sur Word lui-même afin d'arriver à vos fins.

    La transposition en VSO sera qu'un jeu d'enfant...


    Argy
    Saturday, September 18, 2010 11:30 AM
  • Merci Argy pour vos conseils. Je pense que je vais y arriver. J'ai découvert le didacticiel Office dans VS.

    Si non, je posterai un message plus ciblé.

    Bien cordialement

     


    Alain
    Saturday, September 18, 2010 12:03 PM