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

VBA Word Discussion :

insérer un mot sans formatage dans un texte formaté


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut insérer un mot sans formatage dans un texte formaté
    Bonjour à tous,

    c'est avec un peu d'émotion que j'écris sur ce forum pour la première fois (je suis désolé pour ceux qui me lise pour la deuxième fois, je me suis comme trompé dans mon postage...). Je vous dois déjà quelques lignes de code que j'ai récupéré en vous lisant et je peux enfin vous en remercier.
    J'apprends petit à petit le vbscript grâce à vous entre autre mais là j'ai un petit problème dont je n'arrive pas à trouver la solution malgré tout mes efforts alors que je pense que ça doit être tout bête. Peut-être pourrez vous m'éclairer.

    Je me demande s'il est possible d'insérer une chaine de caractère sans format (par exemple sans italique) à l'intérieur d'un paragraphe qui lui est formaté (par exemple en italique).

    exemple concret, je cherche les éléments surlignés et je veux insérer des balises avant et après. Le texte doit rester surligné (et italique s'il est italique ect...) mais les balises elles ne doivent pas l'être (ne doivent pas prendre le formatage du texte surligné).

    voici le morceau de code incriminé (j'ai essayé avec plein de variantes) :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ActiveDocument.Content.Select
        Selection.Find.ClearFormatting
        Selection.Find.Highlight = True
     
        While Selection.Find.Execute
            Selection.InsertBefore Text:="<t>"
            Selection.InsertAfter Text:="</t>"
            Selection.MoveRight Unit:=wdCharacter, Count:=1
     
        Wend
    si quelqu'un a une idée sur la ligne de code à insérer ou me dire si c'est impossible, je lui en serait reconnaissant.

    merci d'avance

    Happyculteur

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Boujour à toi cousin batave.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Selection.ClearFormatting
    Ça donnera ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    While Selection.Find.Execute
       With Selection
           .clearformatting
           .InsertBefore Text:="<t>"
           .InsertAfter Text:="</t>"
           .MoveRight Unit:=wdCharacter, Count:=1
       End With
     
        Wend
    Avec l'utilisation d'un With, tu économises quelques mots.

  3. #3
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut T'es dans la ...


    J'ai déjà traité ce problème avec Word il y a déjà 10 ans mais le problème reste entier et il faut s'accrocher pour le résoudre. Si tu veux le résoudre, (dans tous les cas évidemment), tu dois utiliser les signets (quasi invisbles) que Word pose sur les éléments pour les changer et ça dépend de ta version de Word puis après du formattage concerné.

    Je te conseille une autre astuce si tu peux et crois-moi que tu gagneras du temps (et pas qu'un peu ). Ouvre un autre document (=une nouvelle fenêtre vierge), met en forme avec tes balises que tu veux (si tu en veux ), sélectionne tout, coupe, déplace ton curseur à l'endroit de ton texte concerné par l'insertion et colle. ET surtout n'écoute pas les conseils de Word, il faut que 1°) tu déplaces ton curseur (y compris en VB) et 2°) que tu colles. Pour un bon fonctionnement (mais vu que tu fais du VB), tu dois savoir il faut que tu aies supprimer les options par défaut de Word, concernant le copier-coller avec gestion d'espace, ainsi que l'option de sélection automatique des mots.

    Une 2ième ruse possible, plus complexe, mais qui marche aussi, enregistre ton fichier en HTML, après avoir répéré tes endroits d'insertions (mais je suppose que tu les connais) puis réouvre ton fichier en mode texte, il suffit alors de coller tes balises devant les balises HTML (<i> pour italique, <g> pour gras, <u> pour souligné...), tu sauvegardes en format initial (donc texte) puis tu réouvres en format par défaut (Word reconnait alors son format HTML à lui) ça marche pour les balises ouvrantes HTML mais pas pour toutes les balises fermantes car de toute façon Word n'est pas capable de traiter correctement le format HTML (sauf s'il a des balises complémentaires spécifiques qu'il ajoute lors du passage du format .doc au format .Html) et n'est pas capable de traiter le XHTML.

    Si tu ne peux pas être dans ces 2 cas, réponds-moi je te dirais comment faire pour tous les cas mais il me faudrait des précisions (importantes ) sur ta configuration, ta version de Word et les mises en forme que tu veux faire .

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse, mais j'avais déjà essayé un truc du même type.

    Le problème avec "selection.clearformatting", c'est que toute la sélection (ici la sélection c'est l'élément surligné plus les balises) perd son formatage. Or, le texte entre les balises doit conserver son formatage donc son surlignage et son italique éventuellement. Les balises quand à elle ne doivent pas être surligné ou en italique, là est tout le problème.

    En fait, j'ai pas dit toute la vérité, une solution existe mais que je trouve ridicule.
    Solution ridicule : Faire un premier find sur le surlignage et ajouter les balises, puis faire un find sur chacune des balises et appliquer un clear formatting mais j'avoue être mécontent de cette solution étant donné qu'il faut faire trois find alors qu'un seul devrait suffire en insérant les balises sans formatage.
    Il doit quand même exister un moyen d'insérer du texte sans qu'il soit formaté par l'endroit où il est inséré non?

    happyculteur qui cherche qui cherche

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par happyculteur Voir le message
    Merci pour ta réponse, mais j'avais déjà essayé un truc du même type.

    Le problème avec "selection.clearformatting", c'est que toute la sélection (ici la sélection c'est l'élément surligné plus les balises) perd son formatage. Or, le texte entre les balises doit conserver son formatage donc son surlignage et son italique éventuellement. Les balises quand à elle ne doivent pas être surligné ou en italique, là est tout le problème.

    En fait, j'ai pas dit toute la vérité, une solution existe mais que je trouve ridicule.
    Solution ridicule : Faire un premier find sur le surlignage et ajouter les balises, puis faire un find sur chacune des balises et appliquer un clear formatting mais j'avoue être mécontent de cette solution étant donné qu'il faut faire trois find alors qu'un seul devrait suffire en insérant les balises sans formatage.
    Il doit quand même exister un moyen d'insérer du texte sans qu'il soit formaté par l'endroit où il est inséré non?

    happyculteur qui cherche qui cherche
    Mea culpa, je pensais que c'était le texte entre le balises que tu devais avoir sans formatage.
    Une des solutions serait de rechercher les balises et de les nettoyer.
    Ou comme Sepia le suggère, insérer un signet sur la sélection, insérer les balises, ensuite reprendre le signet se déplacer devant le signet, prendre 3 caractères, nettoyer, reprendre le signet, se positionner derrière, sélectionner 4 caractères, nettoyer les format.
    Recherche suivante, remettre le signet.

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    merci sépia, tes solutions fonctionnent mais comme ce n'est pas pour moi mais pour quelqu'un qui doit appliquer ça pour ses documents, il faut que ça soit le plus simple possible. Créer un deuxième fichier avec les balises dans le bon format pourquoi pas mais le jour où le fichier est malencontreusement déplacer sa macro fonctionnera plus (et ça peut arriver). Pour html c'est un peu dans la même logique, donc j'ai fait la méthode dit "du gros bill" celle que j'exposais dans mon dernier post. D'un point de vue utilisateur, y a qu'à appuyer sur le bouton et ça marche, d'un point de vue programmation c'est moche .

    merci pour tout quand même,

    happyculteur

    ps : pour la version word, je sais qu'elle travaille sur deux postes avec deux versions de word différentes... et moi je travaille avec une troisième (la 2007 arghhh).

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/04/2013, 04h50
  2. insérer un mot sans formatage dans un texte formaté
    Par happyculteur dans le forum VBScript
    Réponses: 2
    Dernier message: 19/11/2007, 17h22
  3. Réponses: 1
    Dernier message: 01/05/2007, 10h39
  4. insérer le caractere "retour chariot" dans le text
    Par moicats dans le forum Access
    Réponses: 11
    Dernier message: 13/04/2006, 13h56
  5. prob affichage mot en gras dans un texte
    Par klik dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 13/07/2005, 08h38

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