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 :

Distinguer différentes zones de texte dans un document Word


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Distinguer différentes zones de texte dans un document Word
    Bonjour,
    Je me permets de vous solliciter pour un problème qui me paraît assez difficile.

    Mon projet est de de renseigner un document administratif, dont le cadre, le logo et certains parties textuelles sont "bloquées" (ou interdites) à l'utilisateur tandis que d'autres sont l'endroit où j'insérerais des zones de texte.

    Ainsi, concrètement, je scanne un document administratif. Je dispose des zones de texte dans Word aux endroits où l'utilisateur est censé répondre aux questions inscrites.

    Jusque là, rien de bien compliqué. Je n'ai fait que fusionner une image et des zones de texte. Mais 2 complications:
    * je cherche à distinguer ces différentes zones de texte. Pourquoi ?
    * parce qu'elles devront chacune être liées à un formulaire dont le code sera écrit en VB.net.

    Mais la question fondamentale est:
    Peut-on distinguer des zones de texte dans un document en leur attribuant une désignation les individualisant (un nom, une variable..) ?

    Ainsi, dans la pièce jointe, je suis censé ne pas pouvoir modifier le cadre du haut, ni supprimer les inscriptions 'N° de dossier' ou 'N° de formulaire' ni tenter quelque coup de bistouri informatique à l'aimable personnage. Par contre, je suis censé pouvoir écrire dans les zones 1 à 7, grâce à des formulaires contenant des textbox, des combobox...
    Cela parle-t-il à quelqu'un ? Merci beaucoup, Grég

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    2 solutions parmi d'autres :
    • identifier les zones de textes par des bookmarks (signets),
    • mettre dans le document des mots clés différents avec un caratère spécial pour marquer chaque zone de texte, par exemple µNom, µPrenom, ... et pour finaliser la saisie lees remplacer par les valeurs saisies.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup de la réponse.

    Cela semble donc possible. C'est déjà super.
    J'aime bien la formule Signets qui est aisée à travailler ensuite en VB.net mais par curiosité, je ne vois pas vraiment ce qu'il retourne des fameux mots clés. Je les insère où ? Directement dans les zones de texte ? Je fais ensuite une recherche puis je remplace ?
    Serait-ce cela dont il est question ?

    Merci encore, Grég

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Supposons que le doc se présente ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    +==================================+
    ! Identification                   !
    ! --------------                   !
    ! NOM         : µNom               !
    ! PRENOM      : µPrenom            !
    ! ...                              !
    !                                  !
    Il suffit de selectionner tout le document : Word.Document.Range(nil,nil).Select()
    puis d'effectuer les remplacements un par un : Word.Application.Selection.Find.Execute() avec les bon paramètres (exemple ci-dessous en C#).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                ref FindTextObject   , ref MissingObject, ref TrueObject    , // FindText       , Matchcase      , WholeWord
                ref MissingObject    , ref MissingObject, ref MissingObject , // WildCard       , MatchSoundsLike, MatchAllWordsForm
                ref TrueObject       , ref MissingObject, ref MissingObject , // Forward        , Wrap           , Format
                ref ReplaceTextObject, ref ReplaceObject, ref MissingObject , // ReplaceWith    , Replace        , MatchKasida    
                ref TrueObject       , ref MissingObject, ref MissingObject); // MatchDiacritics,MatchAlefHamza  , MatchControl
    Pour le remplacement du nom dans le formulaire, on initialiserait :
    • FindTextObject avec "µNom"
    • ReplaceTextObject avec NomTextBox.Text.
    • ReplaceObject avec 2 (toutes les occurences)
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai tenté d'attribuer un signet dans une zone de texte et écrit un mot ({zone3}) dans une autre zone.

    En même temps, j'ai voulu vérifier que la 'procédure' de recherche -remplacement fonctionnait grâce un témoin ({zone1}, qui n'est pas inclus dans une zone de texte.

    L'application fonctionne pour le témoin {zone1}, mais n'atteint ni le signet ni {zone3}, et donc ne remplace pas par les valeurs désirées.

    Je renvoie le code (en VB.net), en précisant que le document C:\Users\greg\Desktop\ZonesDeTextes.docx n'est constitué que de 3 zones de textes éparses dans la feuille. L'une est vide, une contient un signet dénommé zone2, et la dernière le mot {zone3}.

    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
    Option Strict On
    Option Explicit On
    Imports Microsoft.office.Interop
    Imports Microsoft.Office.Interop.Word
     
    Module Module1
        Dim oWord As New Word.Application
     
        Sub Main()
     
            Dim motancien_Zone1 As Object
            Dim motnouveau_Zone1 As Object
     
            Dim motancien_Zone3 As Object
            Dim motnouveau_Zone3 As Object
     
            motancien_Zone1 = "{zone1}"
            motnouveau_Zone1 = "Pierre"
     
     
            motancien_Zone3 = "{zone3}"
            motnouveau_Zone3 = "Jean"
     
            oWord.Documents.Open("C:\Users\greg\Desktop\ZonesDeTextes.docx")
            oWord.Visible = True
     
            Remplacer(motancien_Zone1, motnouveau_Zone1)
     
            oWord.Selection.GoTo(Name:="zone2")
            oWord.Selection.Bookmarks("zone2").Range.Text = "Jacques"
     
            Remplacer(motancien_Zone3, motnouveau_Zone3)
     
            Console.ReadLine()
     
            oWord.ActiveDocument.Close()
            oWord.Visible = False
            oWord.Quit()
        End Sub
     
        Public Sub Remplacer(ByVal motancien As Object, ByVal motnouveau As Object)
     
            oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
        End Sub
    End Module
    J'essaie en même temps de comprendre ta réponse mais j'avoue que je ne connais rien en C#. Donc il va falloir
    que je m'accroche

    Merci encore, Grég

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Toout devrait pourtant fonctionner, même si l'instruction oWord.Selection.GoTo(Name:="zone2") est inutile si on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oWord.ActiveDocument.Bookmarks("zone2").Range.Text = "Jacques"
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Eh bien, c'est là que cela me surprend parce que je réussis à atteindre le signet (je n'ai pas essayé la recherche manuelle) dans le document Word, mais VB.net me génère une erreur en me signifiant que lui ne trouvait pas le signet...

    Incompréhensible...
    Mais Merci mille fois, Greg

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    oWord.ActiveDocument.Bookmarks("zone2").Range.Text = "Jacques"
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Je me permets de contineur la discussion. Vous avez souligné ActiveDocument à dessein ?
    Merci.

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Oui, c'est "ActiveDocument" au lieu de "Selection".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup de votre aide et votre soutien. L'application fonctionne.
    Grég

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/06/2015, 22h30
  2. Insérer un bloc de texte dans un document word
    Par bb_brown dans le forum VBA Word
    Réponses: 1
    Dernier message: 13/11/2009, 00h19
  3. Localiser du texte dans un document word avec java
    Par samorra dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 14/07/2009, 12h56
  4. Réponses: 0
    Dernier message: 15/03/2008, 09h59
  5. Réponses: 3
    Dernier message: 16/11/2006, 17h06

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