Macro demande amélioration : recherche et modifications formats mots clés
FVR812
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
m@rina Messages postés 23882 Date d'inscription Statut Contributeur Dernière intervention -
m@rina Messages postés 23882 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, Je dois analyser pour mes recherches des rapports convertis en word très longs, et je fais des recherches par mots clés.
Par exemple sur un fichier WORD, j’ai recherché en mettre en gras et en rouge dans le texte les mots « femme», « fille », « santé », «éducation» .
Je fais une macro enregistrée sous : "femmefilleéducationsantéRouge" (code ci dessous) :
Enregistrer macro
Accueil/rechercher/j’écris femme/ok/remplacer : dans la fenêtre qui s’ouvre, je remplace « femme» par «femme»/plus/format/police : en gras et en rouge dans la fenêtre/ok/remplacer tout> une msgbox me dit qu’il a effectué x remplacement/fermer
rechercher/j’écris fille , puis … mêmes manœuvres et ainsi de suite pour chaque mot jusqu’à la fin/Arrêter l’enregistrement.
Ma macro s’appelle « femmefilleéducationsantéRouge», et elle fonctionne en cliquant sur exécuter. Je vois bien sur le code VBA les répétitions.
Mais mes pb :
1 c’est que c’est long (j’ai parfois des macro de 25 à 30 mots selon le thème de recherche),
2 si je fais une erreur de saisie ça me crée parfois un bug à l’exécution et je suis obligé de tout recommencer,
et 3 je ne peux pas revenir en arrière, corriger, enlever ou ajouter un autre mot une fois que la macro est enregistrée.
Je voudrais que l’une ou l’un d’entre vous qui s’y connait en VBA, me rectifie, refasse la macro ci-dessous, avec tous les mots clés sur la même ligne de code, de façon à ce que je puisse reproduire ce modèle de macro, et surtout pouvoir revenir sur cette ligne pour corriger ou ajouter d’autres mots.
Merci de m’aider. Cordialement.
Par exemple sur un fichier WORD, j’ai recherché en mettre en gras et en rouge dans le texte les mots « femme», « fille », « santé », «éducation» .
Je fais une macro enregistrée sous : "femmefilleéducationsantéRouge" (code ci dessous) :
Enregistrer macro
Accueil/rechercher/j’écris femme/ok/remplacer : dans la fenêtre qui s’ouvre, je remplace « femme» par «femme»/plus/format/police : en gras et en rouge dans la fenêtre/ok/remplacer tout> une msgbox me dit qu’il a effectué x remplacement/fermer
rechercher/j’écris fille , puis … mêmes manœuvres et ainsi de suite pour chaque mot jusqu’à la fin/Arrêter l’enregistrement.
Ma macro s’appelle « femmefilleéducationsantéRouge», et elle fonctionne en cliquant sur exécuter. Je vois bien sur le code VBA les répétitions.
Mais mes pb :
1 c’est que c’est long (j’ai parfois des macro de 25 à 30 mots selon le thème de recherche),
2 si je fais une erreur de saisie ça me crée parfois un bug à l’exécution et je suis obligé de tout recommencer,
et 3 je ne peux pas revenir en arrière, corriger, enlever ou ajouter un autre mot une fois que la macro est enregistrée.
Je voudrais que l’une ou l’un d’entre vous qui s’y connait en VBA, me rectifie, refasse la macro ci-dessous, avec tous les mots clés sur la même ligne de code, de façon à ce que je puisse reproduire ce modèle de macro, et surtout pouvoir revenir sur cette ligne pour corriger ou ajouter d’autres mots.
Merci de m’aider. Cordialement.
Sub femmefilleéducationsantéROUGE() ' ' femmefilleéducationsantéROUGE Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Bold = True .Color = wdColorRed End With With Selection.Find .Text = "femme" .Replacement.Text = "femme" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Bold = True .Color = wdColorRed End With With Selection.Find .Text = "fille" .Replacement.Text = "fille" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Bold = True .Color = wdColorRed End With With Selection.Find .Text = "éducation" .Replacement.Text = "éducation" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Bold = True .Color = wdColorRed End With With Selection.Find .Text = "santé" .Replacement.Text = "santé" .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
A voir également:
- Macro demande amélioration : recherche et modifications formats mots clés
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
7 réponses
Bonjour,
Effectivement cette macro n'est pas au top !
J'ai créé un exemple modèle qui fonctionne avec un userform, ça me paraît plus fonctionnel :
https://www.cjoint.com/c/JJFoK1jBWEH
J'ai prévu pour chercher 6 occurrences, mais tu peux en ajouter ou lancer le formulaire en plusieurs fois.
m@rina
Effectivement cette macro n'est pas au top !
J'ai créé un exemple modèle qui fonctionne avec un userform, ça me paraît plus fonctionnel :
https://www.cjoint.com/c/JJFoK1jBWEH
J'ai prévu pour chercher 6 occurrences, mais tu peux en ajouter ou lancer le formulaire en plusieurs fois.
m@rina
Merci Marina, mais je n'ouvre rien en cliquant sur la flèche : message de sécurité macro alors que mes autres macro sont fonctionnelles. As tu une explication ? Ou un autre moyen de me la communiquer ? Si je peux utiliser ta solution ça me tirerait une sacré épine du pied .
Bonjour,
Tu regardes la macro en prenant plutôt celle que j'ai refaite correctement et que tu peux télécharger ici avec les explications :
https://faqword.com/index.php/word/mise-en-forme/1182-comment-en-une-seule-operation-appliquer-un-format-particulier-a-plusieurs-expressions-dissemines-dans-un-document
Tu crées un style de caractère rouge et gras.
Puis dans le formulaire, tu ajoutes des zones de texte, tu regardes la macro, et tu complètes avec tes nouvelles zones.
Il y a juste à modifier cette partie-là :
A noter que cette dernière ligne n'est pas vraiment obligatoire pour toi... C'est juste au cas où tu cliques sur OK sans avoir saisi un seul mot...
m@rina
Tu regardes la macro en prenant plutôt celle que j'ai refaite correctement et que tu peux télécharger ici avec les explications :
https://faqword.com/index.php/word/mise-en-forme/1182-comment-en-une-seule-operation-appliquer-un-format-particulier-a-plusieurs-expressions-dissemines-dans-un-document
Tu crées un style de caractère rouge et gras.
Puis dans le formulaire, tu ajoutes des zones de texte, tu regardes la macro, et tu complètes avec tes nouvelles zones.
Il y a juste à modifier cette partie-là :
mot1 = Me.TextBox1 mot2 = Me.TextBox2 mot3 = Me.TextBox3 mot4 = Me.TextBox4 mot5 = Me.TextBox5 mot6 = Me.TextBox6 '<underline>compléter avec les autres mots</underline> mots = Array(mot1, mot2, mot3, mot4, mot5, mot6, <underline>compléter</underline>) If mot1 = "" And mot2 = "" And mot3 = "" And mot4 = "" And mot5 = "" And mot6 = "" <underline>' à compléter</underline>
A noter que cette dernière ligne n'est pas vraiment obligatoire pour toi... C'est juste au cas où tu cliques sur OK sans avoir saisi un seul mot...
m@rina
OK merci encore Marina.
Petite question pour les couleurs de police que j’aurais éventuellement à modifier. Tu écris logiquement :
Cordialement
Petite question pour les couleurs de police que j’aurais éventuellement à modifier. Tu écris logiquement :
With myrange.Find.Replacement.Font .Bold = True > ça je comprends : gras .Color = wdColorRed > Red pour rouge d’accord, mais quelle nomenclature utiliser dans cette macro si je veux changer de couleur ? Parfois il y a des codes couleurs RVB RGB… suffit-il chez toi de traduire la couleur en anglais ? End With
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
A priori tu n'as pas lu ce que j'ai écrit... J'ai écrit : "faire un style de caractères"...
et là, tu fais ce que tu veux avec le rouge !
m@rina
et là, tu fais ce que tu veux avec le rouge !
m@rina
Mes excuses Marina je reprends la main à peine aujourd’hui (activités bénévoles liées à quelques activités d’aide aux soignants ARS, et la préparation d'une mission de formation à l'étranger).
Merci pour ta rectification effectivement je n’avais pas lu.
Lorsque je clique sur ton lien, j’ouvre bien un fichier word très long, je clique sur la flèche et apparaît l’user form. J’y entre mes mots, je lance, tout fonctionne impeccablement.
Mais maintenant ta macro écrite, où tu corriges la mienne, et pour laquelle tu m’as indiqué comment rajouter des cases sur l’user form, comment est ce que je fais pour l’appliquer à un texte word à moi ? J’ai bien essayé sur ton fichier téléchargé : développeur/visual basic pour la récupérer et la coller sur un doc à moi, : pas moyen. J’ai ouvert un doc à moi en essayant toujours développeur/visual basic ou même macro espérant la coller, pas moyen non plus.
Je ne sais pas entrer une macro toute faite. Merci de me dire comment et excuse ma nullité en VBA et la naïveté de mes questions.
Merci pour ta rectification effectivement je n’avais pas lu.
Lorsque je clique sur ton lien, j’ouvre bien un fichier word très long, je clique sur la flèche et apparaît l’user form. J’y entre mes mots, je lance, tout fonctionne impeccablement.
Mais maintenant ta macro écrite, où tu corriges la mienne, et pour laquelle tu m’as indiqué comment rajouter des cases sur l’user form, comment est ce que je fais pour l’appliquer à un texte word à moi ? J’ai bien essayé sur ton fichier téléchargé : développeur/visual basic pour la récupérer et la coller sur un doc à moi, : pas moyen. J’ai ouvert un doc à moi en essayant toujours développeur/visual basic ou même macro espérant la coller, pas moyen non plus.
Je ne sais pas entrer une macro toute faite. Merci de me dire comment et excuse ma nullité en VBA et la naïveté de mes questions.
Bonjour,
Il suffit d'exporter le Userform et de le réimporter dans ton document :
Dans le VBE, clic droit sur le Userform => Exporter un fichier
Puis toujours dan sle VBE, clic droit sur ton document => Importer un fichier
et tu importes le fichier à extension FRM.
Il y a peut être aussi une macro dans un module normal pour lancer le userform, mais c'est une macro de 2 lignes.
m@rina
Il suffit d'exporter le Userform et de le réimporter dans ton document :
Dans le VBE, clic droit sur le Userform => Exporter un fichier
Puis toujours dan sle VBE, clic droit sur ton document => Importer un fichier
et tu importes le fichier à extension FRM.
Il y a peut être aussi une macro dans un module normal pour lancer le userform, mais c'est une macro de 2 lignes.
m@rina