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

C++Builder Discussion :

Pilotage OLE WORD - Remplacer des termes-


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut Pilotage OLE WORD - Remplacer des termes-
    Bonjour !

    J'essaye de réaliser actuellement sous BDS 2006 un petit logiciel qui fusionne des données depuis une source, avec Word. Pour cela, j'utilise le principe classique de modèles de documents dans lesquels on remplace des mots clefs par les mots voulus.

    Mais je ne sais pas comment faire pour remplacer toutes les occurences du document "modèle" par une chaîne de caractère.
    Ex : Remplacer tous les $Nom_Client$ par Monsieur Tartampion.

    Voili voilou, merci pour votre aide

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    bru-no a ecrit:
    Bonjour !

    J'essaye de réaliser actuellement sous BDS 2006 un petit logiciel qui fusionne des données depuis une source, avec Word. Pour cela, j'utilise le principe classique de modèles de documents dans lesquels on remplace des mots clefs par les mots voulus.

    Mais je ne sais pas comment faire pour remplacer toutes les occurences du document "modèle" par une chaîne de caractère.
    Ex : Remplacer tous les $Nom_Client$ par Monsieur Tartampion.

    Voili voilou, merci pour votre aide
    Je peu te proposer une fonction je suis sur quelle fonctionne sur Word2003.
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
        // cette procedure permet de remplacer du texte par un autre
        // procedure Remplacement
     
        // toto texte a rechercher
        // tata texte qui remplace
     
        vMSWord.OlePropertyGet("Selection").OlePropertyGet("Find").
        OleFunction("Execute", "toto", false, true, false, false, false, true, false, false,
        "tata", 2, false, false, false, false);
     
        // doc VB Word Execute, méthode
        Execute, méthode
     
        Exécute l'opération de recherche spécifiée. Renvoie la valeur True si l'opération
        a été effectuée avec succès. Argument de type Boolean.
     
        expression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
        MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida,
        MatchDiacritics, MatchAlefHamza, MatchControl)
     
        expression      Obligatoire. Expression qui renvoie un objet Find.
     
        FindText
        Argument de type Variant facultatif. Texte à rechercher. Utilisez une chaîne vide ("")
        pour rechercher le format uniquement. Vous pouvez rechercher des caractères spéciaux
        en spécifiant les codes de caractère appropriés. Par exemple, "^p" correspond à une
        marque de paragraphe et "^t" correspond à un caractère de tabulation. Pour obtenir
        une liste des caractères spéciaux, voir Rechercher et remplacer du texte ou d'autres
        éléments.
     
        MatchCase
        Argument de type Variant facultatif. Affectez-lui la valeur True pour spécifier que
        le texte de recherche doit respecter la casse. Correspond à la case à cocher Respecter
        la casse de la boîte de dialogue Rechercher et remplacer (menu Edition).
     
        MatchWholeWord
        Argument de type Variant facultatif . Affectez-lui la valeur True pour que l'opération
        de recherche s'effectue uniquement sur les mots entiers, et non sur une partie d'un mot.
        Correspond à la case à cocher Mot entier de la boîte de dialogue Rechercher et remplacer.
     
        MatchWildcards
        Argument de type Variant facultatif. Affectez-lui la valeur True pour que le texte à
        rechercher soit un opérateur de recherche spécial. Correspond à la case à cocher Utiliser
        les caractères génériques de la boîte de dialogue Rechercher et remplacer.
     
        MatchSoundsLike
        Argument de type Variant facultatif. Affectez-lui la valeur True pour que l'opération
        de recherche s'effectue sur les mots similaires au texte à rechercher. Correspond à
        la case à cocher Recherche phonétique de la boîte de dialogue Rechercher et remplacer.
     
        MatchAllWordForms
        Argument de type Variant facultatif. Affectez-lui la valeur True pour que l'opération
        de recherche s'effectue sur toutes les formes du texte à rechercher (par exemple,
        "asseoir" recherche « asseyant » et « assis »). Correspond à la case à cocher Rechercher
        toutes les formes du mot de la boîte de dialogue Rechercher et remplacer.
     
        Forward
        Argument de type Variant facultatif. Affectez-lui la valeur True pour rechercher
        l'occurrence suivante (vers la fin du document).
     
        Wrap
        Argument de type Variant facultatif. Contrôle ce qui se passe si la recherche
        commence à un point autre que le début du document et que la fin du document est
        atteinte (ou vice versa si Forward se voit affecter la valeur False). Cet argument
        contrôle également ce qui se passe s'il existe une sélection ou une plage et que
        le texte à rechercher n'est pas trouvé dans la sélection ou dans la plage. Il peut
        s'agir de l'une des constantes WdFindWrap suivantes.
     
        Les constantes WdFindWrap possibles sont les suivantes : 
        wdFindAsk Une fois la recherche dans la sélection ou la plage terminée, Microsoft
        Word affiche un message demandant si la recherche continue dans le reste du document. 
        wdFindContinue L'opération de recherche continue si le début ou la fin de la plage
        de recherche est atteinte. 
        wdFindStop L'opération de recherche est terminée si le début ou la fin de la plage
        de recherche est atteinte. 
     
        Format
        Argument de type Variant facultatif. Affectez-lui la valeur True pour que l'opération
        de recherche s'effectue sur toutes les formes en plus ou à la place du mot à rechercher.
     
        ReplaceWith
        Argument de type Variant facultatif. Texte de remplacement. Pour supprimer le
        texte spécifié par l'argument Find, utilisez une chaîne vide (""). Vous spécifiez
        des caractères spéciaux et des critères de recherche avancée de la même manière
        que vous utilisez l'argument Find. Pour spécifier un objet graphique ou un élément
        non-texte en tant qu'élément de remplacement, placez cet élément dans le Presse-papier,
        et spécifiez "^c" pour ReplaceWith.
     
        Replace
        Argument de type Variant facultatif. Spécifie le nombre de remplacements effectués : un,
        tous ou aucun. Il peut s'agir de n'importe quelle constante WdReplace.
     
        Les constantes WdReplace possibles sont les suivantes : 
        wdReplaceAll, wdReplaceNone, wdReplaceOne 
     
        MatchKashida
        Argument de type Variant facultatif. Affectez-lui la valeur True si les
        opérations de recherche mettent en correspondance le texte en respectant les
        signes kachidés contenus dans le document en langue arabe. Il se peut que cet
        argument ne soit pas disponible, selon la prise en charge de langue (anglais
        (États-Unis), par exemple) que vous avez sélectionnée ou installée.
     
        MatchDiacritics
        Argument de type Variant facultatif. Affectez-lui la valeur True si les opérations
        de recherche mettent en correspondance le texte en respectant les caractères
        diacritiques contenus dans le document en langue qui se lit de droite à gauche.
        Il se peut que cet argument ne soit pas disponible, selon la prise en charge
        de langue (anglais (États-Unis), par exemple) que vous avez sélectionnée ou installée.
     
        MatchAlefHamza
        Argument de type Variant facultatif. Affectez-lui la valeur True si les opérations
        de recherche mettent en correspondance le texte en respectant les signes alef hamza
        contenus dans le document en langue arabe. Il se peut que cet argument ne soit pas
        disponible, selon la prise en charge de langue (anglais (États-Unis), par exemple)
        que vous avez sélectionnée ou installée.
     
        MatchControl
        Argument de type Variant facultatif. Affectez-lui la valeur True si les opérations
        de recherche mettent en correspondance le texte en respectant les caractères de
        contrôle bidirectionnel contenus dans le document en langue qui se lit de droite
        à gauche. Il se peut que cet argument ne soit pas disponible, selon la prise en
        charge de langue (anglais (États-Unis), par exemple) que vous avez sélectionnée
        ou installée.
     
        Notes
        Si MatchWildcards se voit affecter la valeur True, vous pouvez spécifier des
        caractères génériques et d'autres critères de recherche avancée pour l'argument
        FindText. Par exemple, "*(ant)" recherche tous les mots se terminant par « ant ».
     
        Pour rechercher un symbole, tapez le signe (^) suivi d'un zéro (0), puis le code
        de caractère du symbole. Par exemple, "^0151" correspond à un tiret cadratin ().
     
        À moins que ce soit spécifié, le texte de remplacement hérite du format du texte
        qu'il remplace dans le document. Par exemple, si vous remplacez la chaîne "abc"
        par "xyz,", les occurrences de "abc" en gras sont remplacées par la chaîne "xyz"
        en gras.
     
        Également, si MatchCase se voit affecter la valeur False, les occurrences du
        texte à rechercher qui sont en majuscules seront remplacées par une version en
        majuscules du texte de remplacement sans distinction des textes à rechercher et
        de remplacement. À l'aide de l'exemple précédent, les occurrences de "ABC" sont
        remplacées par "XYZ.".
    Si tu a une version de Word inferieure a 2003 il faudra modifier le nombre de paramatres.
    J'ai mis une copie de l'aide pour la definition des parametres.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    Merci ! Ca marche avec Word 2000 J'essaierai avec la version 97

    Cool

    Par contre je comprends pas un petit truc : pourquoi on part du variant "Word" et pas du variant qui contient le document ? Comment faire s'il y a plusieurs documents ouverts simultanément ?

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    bru-no a ecrit:
    Merci ! Ca marche avec Word 2000 J'essaierai avec la version 97

    Cool

    Par contre je comprends pas un petit truc : pourquoi on part du variant "Word" et pas du variant qui contient le document ? Comment faire s'il y a plusieurs documents ouverts simultanément ?
    C'est tire de VB et l'instance c'est Word et pas le Document.
    Pour plusieurs Documents il faut tester pour voir comment activer une seule instance, si c'est possible avec VB c'est possible avec OleWord

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    OK !

    Merci

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Je fais remonter ce message avec une nouvelle question

    J'ai remarqué que si le texte est situé en en-tête ou en pied de page, il n'est pas remplacé par l'occurence voulue... Et justement j'ai besoin de changer du texte à ces endroits là ! Pas d'bol

    Est-ce que quelqu'un saurait comment faire ça ?

    Merci

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    bru-no a ecrit:
    Bonjour,

    Je fais remonter ce message avec une nouvelle question

    J'ai remarqué que si le texte est situé en en-tête ou en pied de page, il n'est pas remplacé par l'occurence voulue... Et justement j'ai besoin de changer du texte à ces endroits là ! Pas d'bol

    Est-ce que quelqu'un saurait comment faire ça ?

    Merci
    Voici un code pour ecrire dans l'entete
    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    vWDocument.OlePropertyGet("ActiveWindow").OlePropertyGet("ActivePane").OlePropertyGet("View").OlePropertySet("SeekView", "9");
     
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", "essai d'ecriture dans l'entete");

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Voici le code pour ecrire dans le pied de page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    vWDocument.OlePropertyGet("ActiveWindow").OlePropertyGet("ActivePane").OlePropertyGet("View").OlePropertySet("SeekView", "10");
     
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", "ecriture dans le pied de page");

  9. #9
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    salut,

    désolé de remonter le post, quelqu un connaitrait il a tout hasard l equivalent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSWord.OlePropertyGet("Selection")
    (par exemple)

    sous visual c++ ?

    Merci d avance

  10. #10
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    bon j ai trouvé comment faire

    pour find par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Selection oSel(objWordApp.GetSelection());
     
    Find f1( oSel.GetFind());

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut venomelektro:
    Je pense que pour VC++ il te faut consulter MSN de Microsoft je n'ai pas de lien regarde du cote de Ole, je ne peu pas t'aider plus je n'ai pas ce compilateur.

Discussions similaires

  1. OLE Word : Gestion des pieds de page
    Par TeuZ63 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 06/02/2014, 10h12
  2. pilotage ole Word 2
    Par sorker45 dans le forum Débuter
    Réponses: 5
    Dernier message: 02/03/2011, 11h38
  3. Pilotage OLE WORD : masquer message de Word
    Par sat83 dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2009, 17h48
  4. Pilotage OLE Word avec Visual C++
    Par baka02 dans le forum MFC
    Réponses: 2
    Dernier message: 20/03/2006, 14h04
  5. Pilotage Ole de word
    Par beauchastel dans le forum Langage
    Réponses: 6
    Dernier message: 10/01/2006, 11h43

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