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

API, COM et SDKs Delphi Discussion :

Reconnaître du style dans Word


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Points : 139
    Points
    139
    Par défaut Reconnaître du style dans Word
    Bonjour,

    Je voudrais trouver les mots en gras dans un document Word et les remplacer par d'autre mots. Est ce possible de repérer les mots en gras ou italique ? Comment faire ?

    Cordialement

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    voici qq infos :

    Traitement des paragraphes.
    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
     
    var MesParagraphs: Paragraphs;
        I,J,CountParagraphs:integer;
        MonParagraph: Paragraph;
     
        MonTexte : String;
     
    begin
     
      // Recherche tous les paragraphes
     MesParagraphs:=WordDocument1.Paragraphs;
     CountParagraphs:=MesParagraphs.Count;
     
     For  I:=1 to CountParagraphs do
     begin
     MonTexte:='';
         // récupére un paragraphe
        // et recherche les objets le constituant
     MonParagraph:=MesParagraphs.Item(I);
     MonTexte:=Traite_MotsParagraph(MonParagraph.Range.Words)
    ...
    Décompose le paragraphe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function TForm1.Traite_MotsParagraph( MesMots : Words):String;
    var J :integer;
    Begin
     Result:='';
     For J:=1 to MesMots.Count do
       Result:=Result+GetWordFormat(MesMots.Item(J));
    end;
    Teste chaque mot
    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
     
    Function TForm1.GetWordFormat(MonMot : Range):String;
    var WTexte : WideString;
     
    begin
     Result:='';
     WTexte:= CleanString(MonMot.Text);
     if WTexte<>''
      then
       begin
        If MonMot.Bold=-1
         then ..
     
        If MonMot.Italic=-1
         then ...
     
        If MonMot.Underline<>wdUnderlineNone
         then ...     
      end
     Result:=WTexte;
    end;
    Supprime qq caractéres de contrôle, tous ne sont pas gérés ici ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function TForm1.CleanString(lTexte:WideString):WideString;
    begin
      // Supprime les Tabulations
     lTexte:= StringReplace(lTexte,#$D, '', [rfReplaceAll]);
       // Supprime les coupures de ligne
     lTexte:= StringReplace(lTexte, #$7, '', [rfReplaceAll]);
        // Supprime les saut de pages
     Result:= StringReplace(lTexte, #$C, '', [rfReplaceAll]);
     
    end;
    Pour récupérer la position
    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
     
    var MyRange : Olevariant;
        StartMonLien,EndMonLien: Integer;
     
    Begin  
      ...
      StartMonLien:=MonMot.Range.Start;
      EndMonLien:=MonMot.Range.End_; 
      ...
        // Supprime le mot, ou 'une étendue'.
      MyRange:=MonMot.Range;
      MyRange.Start:=Start;
      MyRange.End:=End_;
      MyRange.Delete;
      ...
       // Insére le texte à la position désiré.
      MyRange.Start:=Start;
      MyRange.End:=End_;
      MyRange.InsertBefore(MonTexte);

  3. #3
    Membre habitué Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Points : 139
    Points
    139
    Par défaut
    Je te remercie

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/06/2018, 21h35
  2. [WD-2003] style non conservé dans word 2007
    Par locs31 dans le forum Word
    Réponses: 1
    Dernier message: 29/11/2011, 15h38
  3. Ajouter texte avec style de texte dans word
    Par pimos dans le forum VBA Word
    Réponses: 8
    Dernier message: 16/04/2009, 11h48
  4. [VB-W]Occurence d'un style dans un document Word
    Par cocotte06 dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/06/2006, 07h06
  5. Réponses: 5
    Dernier message: 12/06/2006, 09h31

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