Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft 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 22/08/2007, 15h32   #1
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
Par défaut Macro de recherche dans WORD

Bonjour, je suis nouveau sur ce forum, ma question est la suivant:
Je voudrais faire dans WORD, une marco qui me cherche plusieurs mots, une fois trouver, les mets dans la couleur que j'aurai défini dans la macro.
Je sais faire une recherche d'un mot et lui changer la couleur.
Je ne sais pas comment faire :
- pour qu'il commence au début du document.
- une boucle pour qu'il recommence jusqu'a la fin du document

et plus compliquer, je voudrais aussi changer la couleur d'un texte qui se trouve entre les caratères suivant (* .... *)

Merci de m'aider.
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 08h22   #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
Bonjour et bienvenue sur les forums Office de DVP.

Pour se déplacer au début d'un document, la commande est :
Code :
Selection.HomeKey Unit:=wdStory
Pour la boucle, c'est assez simple tu peux utiliser
Code :
1
2
3
4
For i = 1 To 10
msgbox i
i = 1 + 1
Next i
c'est un exemple de boucle qui sera exécutée pour toutes les valeurs de 1 à 10 et dès que la valeur sera égale à 10, la boucle s'arrête et le code 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
Vieux 23/08/2007, 09h13   #3
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
Merci pour la première réponse, pour la boucle, j'ai compris mais comment faire pour qu'elle scrute jusqu'à la fin du document sachant qu'il peut y avoir 1 mot, 100 mots ou bien aucun à mettre en couleur.
Pour l'instant ma macro est la suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Couleur()
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "IF"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Font.Color = wdColorBlue
End Sub
pour l'instant elle fonctionne mais que sur le premier mot.
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 09h56   #4
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
Je voulais aussi savoir si je mets une boucle FOR, est-t'il possible de mettre dans la boucle un test pour sortir de la boucle FOR si on est en fin de document (EndKey)?
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 09h56   #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
Pour ma part, je n'aurais pas fait de cette manière.

Mais je ne veux pas dire par là que ma méthode est meilleure, loin de là.

Le principe est en gros, parcourir tous les mots de chaque paragraphe.
Pour chaque mot, faire la vérification.

Code :
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
 
Sub parcourir()
Dim para As Paragraph
Dim wrd
Dim wdtemp As String
 
 
For Each para In ActiveDocument.Paragraphs
para.Range.Select
    For Each wrd In Selection.Words
    wrd.Select
    wdtemp = wrd.Text
        wdtemp = Trim(wdtemp)
        Select Case wdtemp
            Case "IF"
                Selection.Font.Bold = True
 
            Case "OU"
                Selection.Font.Italic = True
 
            End Select
    Next wrd
Next para
 
End Sub
__________________
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 23/08/2007, 10h21   #6
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
J'ai essayé ta fonction, mais elle ne fonctionne pas complètement, si le texte recherché et dans un mot, il ne le trouve pas.
du style END_IF;
De plus, il ne prend que les textes en début de ligne.
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 10h28   #7
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
END_IF est un autre mot, imagine créatif, deviendrait créatif

Ou créatif
__________________
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 23/08/2007, 11h30   #8
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
Code :
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
Sub parcourir()
Dim para As Paragraph
Dim wrd
Dim wdtemp As String
Dim i As Integer
 
For Each para In ActiveDocument.Paragraphs
para.Range.Select
i = 1
    'Debug.Print Selection.Words.Count
 
    For i = 1 To Selection.Words.Count
    wdtemp = Selection.Words(i).Text
    Debug.Print wdtemp, i
 
 
        wdtemp = Trim(wdtemp)
        Select Case wdtemp
            Case "IF"
                Selection.Words(i).Font.Bold = True
 
            Case "OU"
                Selection.Words(i).Font.Italic = True
 
        End Select
 
    Next i
 
 
Next para
 
End Sub
Mais encore une fois, seul les mots IF par exemple ne seront modifiés, les mots composé ne le seront pas.
__________________
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 23/08/2007, 11h32   #9
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
Je suis d'accord avec toi mais il se peut que dans mes textes il y a :
IF(%MW...

Les textes que je cherche ne sont pas forcément avec des espaces avant et après. C'est pour cela que j'utilise la fonction de recherche.
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 11h45   #10
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
Avec concaténation des macros
Code :
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
Sub parcourir()
Dim para As Paragraph
Dim wrd
Dim wdtemp As String
Dim i As Integer
 
For Each para In ActiveDocument.Paragraphs
para.Range.Select
With Selection.Find
        .Text = "IF"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Font.Color = wdColorBlue
Next para
 
End Sub
__________________
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 23/08/2007, 13h47   #11
Invité de passage
 
Inscription : août 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 12
Points : 4
Points : 4
Impéccable. Merci.

Et par hasard, tu ne saurais pas pour ma 2ème question:
pour mettre en couleur toute une chaine de caractère compris entre ceux ci:
(* ..... *)
Ceux-ci aussi dans la même couleur.
Merci d'avance.
damall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 11h13   #12
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
Pour ta seconde question, voici une piste :

http://word.developpez.com/faq/?page...rs_PlageSignet
__________________
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 14h24.


 
 
 
 
Partenaires

Hébergement Web