VBA Word - Mettre en gras certains mots selon une liste
Résolu/Fermé
Skt44
-
5 avril 2022 à 08:43
Skt44 Messages postés 2 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 8 avril 2022 - 8 avril 2022 à 10:46
Skt44 Messages postés 2 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 8 avril 2022 - 8 avril 2022 à 10:46
A voir également:
- Word mettre en gras certains mots
- Ecrire en gras sur whatsapp - Guide
- Espace insécable word - Guide
- Supprimer une page word - Guide
- Organigramme word - Guide
- Suivi des modifications word - Guide
13 réponses
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Ambassadeur
1 551
5 avril 2022 à 08:47
5 avril 2022 à 08:47
bonjour,
Quand tu écris "qui varie d'un texte à un autre", veux tu dire "qui varie d'un document à un autre"?
Tu as donc une liste de noms de documents, et, pour chaque document, une liste de mots?
As-tu l'intention d'avoir une macro par document?
Quand tu écris "qui varie d'un texte à un autre", veux tu dire "qui varie d'un document à un autre"?
Tu as donc une liste de noms de documents, et, pour chaque document, une liste de mots?
As-tu l'intention d'avoir une macro par document?
Hello,
Yes, ce sont des textes de 2000 mots ou plus et la liste varie pour chaque document. J'imaginais une macro qui s'adapte mais je ne sais pas si c'est possible
Yes, ce sont des textes de 2000 mots ou plus et la liste varie pour chaque document. J'imaginais une macro qui s'adapte mais je ne sais pas si c'est possible
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 10:23
5 avril 2022 à 10:23
Quand tu écris "texte", est-ce équivalent à document? Plus clair de ne pas changer de vocabulaire.
Ce ne sera possible que si tu décris ce que tu souhaites.
Comment envisages-tu d'utiliser cette macro?
Elle serait dans un document unique et elle traiterait d'autres documents? Lesquels, quand?
Comme souhaites-tu que cela se passe?
Ce ne sera possible que si tu décris ce que tu souhaites.
Comment envisages-tu d'utiliser cette macro?
Elle serait dans un document unique et elle traiterait d'autres documents? Lesquels, quand?
Comme souhaites-tu que cela se passe?
Effectivement pour moi texte = document dans mon esprit.
Je ne pourrais pas vous répondre sur l'utilisation, cela va dépendre de ce qui est possible de faire. Je peux m'adapter .
Enfaite je souhaite gagner du temps et automatiser une tâche répétitive. Actuellement je dois faire pour chaque document, mettre en gras une liste d'une douzaine de mots dans tous le document. C'est assez chronophage
Je ne pourrais pas vous répondre sur l'utilisation, cela va dépendre de ce qui est possible de faire. Je peux m'adapter .
Enfaite je souhaite gagner du temps et automatiser une tâche répétitive. Actuellement je dois faire pour chaque document, mettre en gras une liste d'une douzaine de mots dans tous le document. C'est assez chronophage
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 14:22
5 avril 2022 à 14:22
Décris comment tu fais actuellement.
Que fais-tu chaque jour, chaque semaine, ...
Que fais-tu chaque jour, chaque semaine, ...
C'est à dire ?
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 14:50
5 avril 2022 à 14:50
Imagine que le code VBA soit une personne qui travaille pour toi.
Tu pars en vacances, que vas-tu lui demander de faire, et quand?
Tu pars en vacances, que vas-tu lui demander de faire, et quand?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'imaginais:
1- J'ouvre mon document (avec mon texte)
2- J'ajoute la liste des mots dans mon document (ou dans un excel à côté)
3- J'active la Macro depuis mon word
4- Les mots de ma liste passe en gras
1- J'ouvre mon document (avec mon texte)
2- J'ajoute la liste des mots dans mon document (ou dans un excel à côté)
3- J'active la Macro depuis mon word
4- Les mots de ma liste passe en gras
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 15:38
5 avril 2022 à 15:38
mon document, et mon word, c'est la même chose?
la macro est déjà présente dans le document?
tu travailles toujours avec le même document?
tu utilises plusieurs fois la liste des mots?
où cette liste est préparée?
si tu as plusieurs listes, comment choisis-tu laquelle?
un exemple:
la macro est déjà présente dans le document?
tu travailles toujours avec le même document?
tu utilises plusieurs fois la liste des mots?
où cette liste est préparée?
si tu as plusieurs listes, comment choisis-tu laquelle?
un exemple:
sub macro4() Dim mots() As Variant, mot mots = Array("Bold", "unautremot", "encoreunautremot") For Each mot In mots call engraisse(mot) Next mot end sub private Sub engraisse(unmot as string) Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = unmot .Replacement.Text = unmot .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
- mon document, et mon word, c'est la même chose? Non
- la macro est déjà présente dans le document? Non
- tu travailles toujours avec le même document? Non
- tu utilises plusieurs fois la liste des mots? Une liste différente à chaque fois
- où cette liste est préparée? Excel généralement
- si tu as plusieurs listes, comment choisis-tu laquelle? Une liste correspond à un texte
- la macro est déjà présente dans le document? Non
- tu travailles toujours avec le même document? Non
- tu utilises plusieurs fois la liste des mots? Une liste différente à chaque fois
- où cette liste est préparée? Excel généralement
- si tu as plusieurs listes, comment choisis-tu laquelle? Une liste correspond à un texte
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 16:56
5 avril 2022 à 16:56
comment choisis-tu sur quel document travailler?
le classeur Excel serait peut-être le bon endroit d'où démarrer la macro.
le classeur Excel serait peut-être le bon endroit d'où démarrer la macro.
Soit je crée les documents, soit je les reçois par mail.
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
5 avril 2022 à 23:34
5 avril 2022 à 23:34
tu travailles sur un document à la fois?
c'est d'après le nom du document qu'on choisit la liste de mots?
c'est d'après le nom du document qu'on choisit la liste de mots?
Tout à fait, une document à la fois et en fonction du titre du document j'associe la bonne liste de mots
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Ambassadeur
1 551
6 avril 2022 à 14:49
6 avril 2022 à 14:49
Je suggère de faire ainsi:
- avoir une macro dans un document Word
- quand cette macro est exécutée, elle va examiner tous les documents ouverts, et, si le nom du document est dans une liste de documents, elle va mettre en gras une liste de mots.
- ces deux listes pourraient être extraites d'un document Excel.
Avant d'aller plus loin, j'ai fait un petit prototype, qui n'utilise pas encore de listes, mais où le nom du document à modifier, ainsi que la liste des mots, est dans le code de la macro.
Peux-tu tester cela, et indiquer si cela va dans la bonne direction?
- avoir une macro dans un document Word
- quand cette macro est exécutée, elle va examiner tous les documents ouverts, et, si le nom du document est dans une liste de documents, elle va mettre en gras une liste de mots.
- ces deux listes pourraient être extraites d'un document Excel.
Avant d'aller plus loin, j'ai fait un petit prototype, qui n'utilise pas encore de listes, mais où le nom du document à modifier, ainsi que la liste des mots, est dans le code de la macro.
Peux-tu tester cela, et indiquer si cela va dans la bonne direction?
Option Explicit Private Sub browsedocs() Dim wDoc As Document For Each wDoc In Application.Documents If wDoc.Name = "testupd.docx" Then Call undoc(wDoc, "Bold,unautremot,encoreunautremot") End If Next wDoc End Sub Private Sub undoc(doc As Document, lesmots As String) Dim mots As Variant, mot, smot As String mots = Split(lesmots, ",") Dim r As Range Set r = doc.Range r.WholeStory For Each mot In mots smot = mot Call engraisse(r, smot) Next mot End Sub Private Sub engraisse(r As Range, unmot As String) With r.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Font.Bold = True .Text = unmot .Replacement.Text = unmot .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With End Sub Private Sub engraisseok(doc As Document, unmot As String) doc.Activate Selection.WholeStory With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Font.Bold = True .Text = unmot .Replacement.Text = unmot .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With End Sub
Bonjour yg_be,
C'est parfaitement ça, ça marche super bien !
C'est parfaitement ça, ça marche super bien !
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
7 avril 2022 à 15:05
7 avril 2022 à 15:05
Pour aller chercher les noms dans Excel:
- créer un fichier excel (leslistes.xlsx) dans le même répertoire que le document avec la macro
- dans le fichier excel, dans une feuille nommée "list", avoir une liste de noms de documents, à partir de A2, et, à coté (B2), une liste avec les mots à chercher (dans une cellule, tout les mots, séparés par une virgule. Donc une ligne par document candidat.
- dans l'éditeur VBA de Word, où il y a la macro, ajouter "Microsoft Excel ... Object Library" dans les références
- remplacer la sub browsedocs par ceci:
- créer un fichier excel (leslistes.xlsx) dans le même répertoire que le document avec la macro
- dans le fichier excel, dans une feuille nommée "list", avoir une liste de noms de documents, à partir de A2, et, à coté (B2), une liste avec les mots à chercher (dans une cellule, tout les mots, séparés par une virgule. Donc une ligne par document candidat.
- dans l'éditeur VBA de Word, où il y a la macro, ajouter "Microsoft Excel ... Object Library" dans les références
- remplacer la sub browsedocs par ceci:
Sub browsedocs() Dim wDoc As Document, wb As Excel.Workbook, nomdoc As Excel.Range, ws As Excel.Worksheet Set wb = Excel.Workbooks.Open(ActiveDocument.Path + "/leslistes.xlsx") Set ws = wb.Sheets("list") For Each wDoc In Application.Documents Set nomdoc = ws.Cells(2, 1) Do While nomdoc <> "" If wDoc.Name = nomdoc Then Call undoc(wDoc, nomdoc.Offset(, 1).Value) Exit Do End If Set nomdoc = nomdoc.Offset(1) Loop Next wDoc wb.Close End Sub
merci beaucoup pour ces éléments,
Je viens de faire les modifications mais j'ai une erreur "erreur de compilation : type défini par l'utilisateur non défini"
Cela souligne "Sub browsedocs()"
Je viens de faire les modifications mais j'ai une erreur "erreur de compilation : type défini par l'utilisateur non défini"
Cela souligne "Sub browsedocs()"
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
7 avril 2022 à 17:51
7 avril 2022 à 17:51
As-tu ajouté "Microsoft Excel ... Object Library" dans les références?
Il devrait y avoir un texte surligné en jaune, et un autre surligné en bleu. Quel est le texte en bleu?
Il devrait y avoir un texte surligné en jaune, et un autre surligné en bleu. Quel est le texte en bleu?
Skt44
Messages postés
2
Date d'inscription
vendredi 8 avril 2022
Statut
Membre
Dernière intervention
8 avril 2022
Modifié le 8 avril 2022 à 10:47
Modifié le 8 avril 2022 à 10:47
Re,
Effectivement j'avais mal coché l'option,
Cependant, il me semble avoir tout fait correctement mais rien ne se passe
Effectivement j'avais mal coché l'option,
Cependant, il me semble avoir tout fait correctement mais rien ne se passe
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
8 avril 2022 à 10:38
8 avril 2022 à 10:38
Le nom de ton document n'est pas "macro", c'est plutôt "macro.doc" ou quelque chose du genre.
Comment avais-tu testé le prototype?
Comment avais-tu testé le prototype?
Skt44
Messages postés
2
Date d'inscription
vendredi 8 avril 2022
Statut
Membre
Dernière intervention
8 avril 2022
8 avril 2022 à 10:46
8 avril 2022 à 10:46
Ok c'est bon ça fonctionne.
Un grand merci yg_be pour ton aide. Le gain de temps et de productivité grâce à la macro m'est extrêmement précieux.
Merci merci
Un grand merci yg_be pour ton aide. Le gain de temps et de productivité grâce à la macro m'est extrêmement précieux.
Merci merci