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
Avec le code pour le UseForm "Correc_couleur " qui est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager