Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2007, 17h33   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 5
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : novembre 2007
Messages : 5
Points : 1
Points : 1
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 :
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
happyculteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 18h22   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Boujour à toi cousin batave.

Code :
1
2
 
Selection.ClearFormatting
Ça donnera ceci

Code :
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.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 18h31   #3
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
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 .
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 18h36   #4
Invité de passage
 
Inscription : novembre 2007
Messages : 5
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : novembre 2007
Messages : 5
Points : 1
Points : 1
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
happyculteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 18h51   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 20h55   #6
Invité de passage
 
Inscription : novembre 2007
Messages : 5
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : novembre 2007
Messages : 5
Points : 1
Points : 1
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).
happyculteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h14.


 
 
 
 
Partenaires

Hébergement Web