Problème de remplactement d'un mot dans une boucle
Bonjour à tous,
Je suis nouveau ici et cela fait à peine une semaine que j'ai débuté à faire des macro VBA sur word dans le cadre d'un stage.
Je m'excuses donc par avance si je dit de grosses bêtises ou si je ne comprends pas bien tout.
Voila mon problème:
Je dois créer un macro qui corrige directement des mots ou des phrases dans un document word. Ces mots ou ces phrases étant toujours les mêmes j'ai donc pu le faire à l'aide de "Sélectionner/remplacer". Cependant à un moment j'ai dû effectuer la recherche en fonction d'un mot variable mais toujours positionné à une position spécifique. J'ai donc réussi à rechercher ce mot que je doit alors corriger en fonction de cinq mots possible. J'ai d'ailleurs créé un Userform pour cela.
Mon code de recherche
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "<liseré> <(*)>"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute
While Selection.Find.Found
aMotTrouve = Selection.Range.Words(2)
If ((Not ("violet " = aMotTrouve)) And (Not ("rouge " = aMotTrouve)) And (Not ("orange " = aMotTrouve)) And (Not ("vert " = aMotTrouve)) And (Not ("bleu " = aMotTrouve))) Then MsgBox aMotTrouve, vbCritical, "Erreur couleur liseré"
If ((Not ("violet " = aMotTrouve)) And (Not ("rouge " = aMotTrouve)) And (Not ("orange " = aMotTrouve)) And (Not ("vert " = aMotTrouve)) And (Not ("bleu " = aMotTrouve))) Then Correc_couleur.Show
Selection.Find.Execute
Wend |
Avec le code pour le UseForm "Correc_couleur " qui est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Private Sub Corriger_Click()
With Selection.Find
.Text = Fenetre_EDD.aMotTrouve
.Replacement.Text = Correc_couleur.Liste_couleur.Value
.Forward = True
.ClearFormatting
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Selection.Find.Execute
Unload Me ' Ferme le UserForm
End Sub |
Le problème, c'est que quand j'effectue cette macro, elle me propose de corriger le premier mot qui à un problème d'orthographe mais pas les suivants si il y en a ...
J'ai l'impression que c'est un problème lié au Select.Find mais je n'en suis pas sûr et j'ai essayé plusieurs choses sans succès :(
Pouvez vous m'aidez s'il vous plaît. J'espère avoir été suffisamment clair.