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 17/08/2011, 09h00   #1
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : octobre 2007
Messages : 30
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2007
Messages : 30
Points : 10
Points : 10
Envoyer un message via MSN à opacho
Par défaut Identifier couleur de surlignage

Bonjour,

Dans mon document le texte en italique est surligné en jaune, et le texte en gras est surligné en rouge.

Je suis obligé à un moment d'effacer la mise en forme de mon document, par conséquent je perds l'italique et le gras mais mon surlignage reste présent.

Mon problème c'est que j'aimerais "Rechercher / Remplacer" le texte surligné en jaune par du texte italique, et "Rechercher / Remplacer" le texte surligné en rouge par du texte gras, mais je ne sais pas ou on peut définir la couleur dans le code (exemple pour l'italique) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub BackupItalic()
    Selection.Find.ClearFormatting
    Selection.Find.Highlight = True
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = False
    Selection.Find.Replacement.Font.Italic = True
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
En effet avec ce code tout le texte surligné (sans distinction de couleur) passe en italique, du coup je perds mon texte en gras.

Merci d'avance pour votre aide
opacho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 00h19   #2
Nouveau Membre du Club
 
Homme Manu
Automaticien
Inscription : août 2011
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme Manu
Localisation : France, Doubs (Franche Comté)

Informations professionnelles :
Activité : Automaticien
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 16
Points : 25
Points : 25
Je te propose ce code, bien qu'il ne soit peut-être pas adapté pour un texte trop gros.
Scruter les mots un par un, c'est pas forcément le top...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub toto()
 
    Dim nb_mots As Long
    Dim mot
 
    nb_mots = ActiveDocument.Words.Count
    For mot = 1 To nb_mots
          Select Case (ActiveDocument.Words(mot).HighlightColorIndex)
                Case wdYellow: ActiveDocument.Words(mot).Italic = -1
                Case wdRed: ActiveDocument.Words(mot).Bold = -1
          End Select
    Next mot
 
End Sub
Manuel40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 08h42   #3
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : octobre 2007
Messages : 30
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2007
Messages : 30
Points : 10
Points : 10
Envoyer un message via MSN à opacho
En effet ça fonctionne bien mais mes textes sont assez "volumineux" donc du coup ce n'est pas vraiment adapté et le temps de recherche est beaucoup trop long

Il n'y a pas moyen d'arriver au même résultat sans analyser mot par mot ?

Merci pour ton aide
opacho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 10h57   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

L'utilisation de la fonction recherche de Word est beaucoup plus rapide qu'une boucle sur les éléments du texte.

Peut-être une voie à creuser :

Code :
1
2
3
4
5
6
7
8
9
10
 
Selection.HomeKey unit:=wdStory
 
With Selection.Find
    .Forward = True
    .Highlight = True
 
    Debug.Print .Execute
End With
Selection.Range.Font.Italic = True
Ce code ne fonctionne qu'une seule fois, mais on peut faire une boucle sur le résultat de la recherche et tant que la recherche est vraie, on continue.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web