[VB] Macro pour word

Fermé
ancelot - 16 sept. 2008 à 17:33
 débutant - 18 oct. 2008 à 12:09
Bonjour,

J'espère qu'un VB Master passera par là. Je suis très novice sur VB et devrais créer une macro Word qui recherche un et colore toutes les occurences de ce mot en rouge.

(dans le texte: "Un pigeon picore le blé dont l'autre pigeon ne veut pas", la macro colorera 'pigeon' en rouge).

Merci beaucoup pour votre aide
A voir également:

4 réponses

Prog44 Messages postés 17 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 24 septembre 2008 3
16 sept. 2008 à 20:55
Voici une solution :

Sub colorie_pigeon()
Dim i, pos1, pos2 As Integer
Dim vrange As Range

With ActiveDocument
For i = 0 To .Characters.Count - 1
If i < .Characters.Count Then pos1 = i
If pos1 + 6 <= .Characters.Count Then
pos2 = pos1 + 6
Else
pos2 = pos1
End If
Set vrange = ActiveDocument.Range(pos1, pos2)

If vrange.Text = "Pigeon" Or vrange.Text = "pigeon" Then
vrange.Font.Color = wdColorRed
End If
Next i
End With


End Sub
1
Merci Prog44 pour ta réponse.

Ta solution marche mais me pose problème car je devrai faire ça pour plus d'une centaine de mots.

J'ai refléchi au faite à une solution mais j'arrive pas à la coucher en code:

Avec la fonction recherche de word, chercher le mot (La fonction selectionne automatiquement e mot lorsqu'elle le trouve. Avec cette sélection, appliquer arrière pan rouge. Suivant.

Tu penses que c faisable?
0
Prog44 Messages postés 17 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 24 septembre 2008 3
17 sept. 2008 à 19:28
contexte 1 : tu connais d'avance la liste des mots à rechercher, tu peux les implanter dans un tableau de type string :
-------------
dim mots(100) as string

'affectation des mots
mots(1)="pigeon"
mots(2)="voiture"
...
mots(100)="trottoir"


for i=1 to 100

' là, tu mets le code que l'on a vu dans le programme précédent
' le texte sera balayé pour chacun des mots du tableau
next i

contexte 2 : tu ne connais pas les mots à l'avance, c'est l'utilisateur qui les saisit --> Il faut te servir d'un formulaire dans lequel une zone de texte permettra à l'utilisateur de saisir le mot ou la liste de mots séparés d'une virgule.

quand l'utilisateur clique sur le bouton <valider>, tu lances le programme vu précédemment.

Ca te va ?
1
ça maaarchhee!!!! Merci beaucoup pour ton aide et ta réactivité!!!
0
Prog44 Messages postés 17 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 24 septembre 2008 3
18 sept. 2008 à 13:15
tu as pris quelle solution finalement ?
0
J'ai essayé mais cela ne marche pas : pouvez-vous me détailler, ligne par les lignes, le code utilisé ?

Merci d'avance
0