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 :

Selection d'un texte sur MSword


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut Selection d'un texte sur MSword
    Bonjour,

    J'ai un petit soucis de sélection sur word : J'ai un paragraphe qui a cette forme :

    Clio-Moteur-Bougie-0104-009-1 La clio 4 est .... (description )
    Rationel: TBD
    Suppositions: 02.04.07
    Additional info.: 18.20.20
    Author: M. Jacques
    Creation date (dd/mm/yyyy): 06/01/2006
    Stakeholder: EOLE
    Source: TBD
    Link to: Clio-Moteur-Bougie-0104-019-4, Clio-Moteur-Bougie-0104-029-1
    Level: Moteur
    Maturity: Red


    Ce que je voudrais faire cette mettre en forme dans chaque ligne les valeurs de chaques variables sachant que les valeurs: Rationnel, Suppositions, Level ... seront toujours les mêmes :

    Par exemple mettre en forme :
    -La clio 4 est .... (description )
    -TBD
    -02.04.07
    -18.20.20
    - ...


    Donc mon idée était de sélectionner les lignes intéressantes ( par exemple dans mon code la ligne contenant Suppositions) et ensuite sélectionner ce qui suit, mais je n'y arrive pas si quelqu'un a une solution, ça ne semble pourtant pas compliqué mais tout est plus simple sur excel....

    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
    Sub select_line()
     
    Dim test As String
     
    Selection.Find.Text = "Suppositions:"
    Selection.Find.Execute
     
    'Selection.HomeKey Unit:=wdLine, Extend:=wdMove
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
     
    Selection.Find.Text = "^#"         ' Je pense qu'il faut sélectionner de cette manière mais avec ça je sélectionne seulement le premier chiffre
    Selection.HomeKey Unit:=wdLine, Extend:=wdMove
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.Find.Execute
     
    End Sub

    Par avance merci à tous

  2. #2
    Membre régulier Avatar de Magistross
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 73
    Points
    73
    Par défaut
    Ton but est d'arriver à sélectionner le texte après "Suppositions: " ?

    Dans ce cas, ceci devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Selection.Find.Text = "Suppositions: "
    Selection.Find.Execute
     
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Merci c'est exactement ce que je voulais...

    Autre petite question : Comment tu peux dire à la selection de s'arrêter à un certain mot .

    Je voudrais en effet , avoir la possibilité de sélectionner plusieurs lignes jusqu'à ce que le compilateur rencontre le mot Rationnel ( le but étant de sélectionner toute la description sans savoir combien de lignes elle comporte... On sait juste qu'il faut s'arrêter avant à la ligne précédant le mot Rationnel)

    Clio-Moteur-Bougie-0104-009-1 La clio 4 est .... (description )
    Rationnel: TBD



    Par avance merci

  4. #4
    Membre régulier Avatar de Magistross
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 73
    Points
    73
    Par défaut
    Il suffit d'étirer ta sélection jusqu'au mot que tu cherches (dans mon exemple ma sélection commence au début du document, à toi de voir comment tu veux gérer le tout). Ensuite, tu réduits la sélection d'une ligne, et le tour est joué !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Selection.HomeKey Unit:=wdStory
        Selection.Extend
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "Rationnel"
            .Forward = True
            .Wrap = wdFindContinue
        End With
        Selection.Find.Execute
        Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Merci j'ai réussi avec ton aide c'est super sympa, on peut considérer le pb résolu.

    Néanmoins, dernière petite question qui devrait être simple à répondre pour toi :

    Comment je peux effectuer mes actions sur toutes les occurrences du texte?

    Je pensais à quelque chose comme :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Find.Execute Forward = True
    Afin que les actions faites sur une occurrence puisse se faire sur toutes les autres mais ça ne semble pas fonctionner.


    Merci encore pour ton aide

  6. #6
    Membre régulier Avatar de Magistross
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 73
    Points
    73
    Par défaut
    Ça dépend de la nature de tes actions. Il faudrait également que je sache comment tu procèdes pour parcourir ton document.

    Je te dirais qu'en gros, tu devrais avoir une boucle maîtresse avec une condition qui vérifie l'atteinte de la fin du document.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Voici globallement la logique :

    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
    Sub CARE_UPDATE()
     
     
    With Selection.Find
        .ClearFormatting
        .Text = "Clio-"
        .Wrap = wdFindContinue
        .Execute
    End With
     
    Selection.Extend
    Selection.MoveRight unit:=wdWord, Count:=10                   'Selection de la partie Clio-Moteur-Bougie-0104-009-1 et maj du style
    Selection.Style = "CARE Ident"
     
    Selection.MoveRight unit:=wdCharacter, Count:=1
    Selection.Extend
     
    With Selection.Find
        .ClearFormatting
        .Text = "Rationel:"
        .Forward = True
        .Wrap = wdFindContinue
        .Execute
    End With
     
     
    Selection.MoveUp unit:=wdLine, Count:=1, Extend:=wdExtend      ' Selection de la description que vient après Clio-Moteur-Bougie-0104-009-1 jusqu'à Rationel et changement du style
    Selection.EndKey unit:=wdLine
    Selection.Style = "Normal Ident"
     
     
    '**************************Rationel**********************************
     
     
     
    With Selection.Find
     
        .ClearFormatting
        .Text = "Rationel:"
        .Wrap = wdFindContinue
        .Execute
     
    End With
     
     
    Selection.MoveRight unit:=wdCharacter, Count:=2      ' Selection de TBD suivant Rationel et mise en style
    Selection.EndKey unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft unit:=wdCharacter, Count:=0, Extend:=wdExtend
     
    Selection.Style = "Rationale"
     
     
     
     
    '****************************Suppositions:	******************************
     
     
     
    With Selection.Find
     
        .ClearFormatting
        .Text = "Suppositions:"
        .Wrap = wdFindContinue
        .Execute
     
    End With
     
     
    Selection.MoveRight unit:=wdCharacter, Count:=2     ' Selection de 02.04.07 suivant Supposition et mise en forme
    Selection.EndKey unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft unit:=wdCharacter, Count:=0, Extend:=wdExtend
     
    Selection.Style = "Assumptions"


    Etc, en fait je fais ce genre de manip sur tous les éléments de :


    Clio-Moteur-Bougie-0104-009-1 La clio 4 est .... (description )
    Rationel: TBD
    Suppositions: 02.04.07
    Additional info.: 18.20.20
    Author: M. Jacques
    Creation date (dd/mm/yyyy): 06/01/2006
    Stakeholder: EOLE
    Source: TBD
    Link to: Clio-Moteur-Bougie-0104-019-4, Clio-Moteur-Bougie-0104-029-1
    Level: Moteur
    Maturity: Red




    Et ce que je veux faire c'est ce genre de manip sur tous les paragraphes de ce style présent dans mon doc, car pour le moment la macro ci dessus permet de le faire seulement un paragraphe par un.

    J'espère avoir été clair.

    Merci par avance

  8. #8
    Membre régulier Avatar de Magistross
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 73
    Points
    73
    Par défaut
    Si tes blocs sont réellement séparés par des marques de paragraphe, il te suffirait de parcourir dans une boucle la collection ActiveDocument.Paragraphs et de faire tes opération un paragraphe à la fois.

    Sinon, tu vas devoir utiliser quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Do
        'Ta première recherche ici, avec le Wrap à wdFindStop (pour la condition d'arrêt)
        If Selection.Find.Found Then
            'Le reste de ton traitement ici
        End If
    Loop Until Not Selection.Find.Found

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Salut

    Le problème en faisant ce que tu me dis c'est qu'il s'arrête à chaque occurrence avec wdFindStop.

    Et si je mets wdFindContinue et bah, il boucle à l'infinie.

    Si je mets wdFindAsk alors il me demande à chques fois confirmation.

    Moi j'aimerai qu'il puisse boucler du début du texte à la fin sans rien me demander et sans s'arrêter. Je me doute que c'est possible.

    J'espère que tu pourras m'aider.

    Merci d'avance

  10. #10
    Membre régulier Avatar de Magistross
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 73
    Points
    73
    Par défaut
    Tu dois t'assurer que lorsque tu fais un Find avec "wdFindStop", que tu n'ailles aucun texte de sélectionné. Car Find fera la recherche dans ta sélection seulement. Un bon moyen d'y arriver est d'utiliser avant tes Find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Collapse Direction := wdCollapseEnd

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    A priori c'est bon ;

    Merci


    Résolu

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

Discussions similaires

  1. Agir sur la selection d'un texte en VBS
    Par technimedia dans le forum VBScript
    Réponses: 6
    Dernier message: 17/09/2009, 17h19
  2. Couleur texte sur SELECT en disable
    Par richard038 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2006, 12h22
  3. Réponses: 2
    Dernier message: 29/03/2006, 18h18
  4. Mettre du texte sur une vidéo(ou par dessus un tmediaplayer)
    Par souch dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/07/2004, 13h30
  5. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06

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