Mettre en gras un mot précis grâce à une macro

-1

Bonjour à tous,

J'ai un fichier excel dans lequel j'écris les listes d'ingrédients des produits que je vends. Ma liste d'ingrédients est écrite dans la cellule C8. Je voudrais que les allergènes se mettent en gras dans cette cellule via à une macro. J'ai donc tenté avec le code suivant trouvé sur ce forum :


Sub Beurre ()

Range("C8").Characters(InStr(1, Range("C8").Value, "beurre"), Len("beurre")).Font.Bold = True

End Sub


Or j'ai 3 problèmes avec ce code :

1) Si le mot beurre n'apparaît pas dans ma liste d'ingrédient, ce sont les 6 premières lettres de ma liste d'ingrédients qui se mettent en gras

2) Si j'ai du beurre de cacao dans ma recette, par exemple dans la composition de mon chocolat, le mot "beurre" se met en gras alors que le beurre de cacao ne contient pas d'allergène... 

3) Mon système est plutôt long à l'exécution puisque j'ai avoir une macro par ingrédient allergène (blé, avoine, épeautre, beurre, lait, noisettes, amandes, noix du brésil, et une dizaine d'autres).


Partant de ces observations je voudrais :

- que la macro ne mette rien en gras si le mot n'est pas du tout rencontré, en tout cas pas dans les conditions exigées

- pouvoir mettre en gras le mot beurre uniquement lorsqu'il n'est pas suivi des mots "de cacao". Mais je voudrais que s'il est suivi par exemple des mots "de baratte" ou "demi-sel", là il se mette en gras.

- pouvoir rassembler l'ensemble des macros sous une seule et même macro qui se nommerait par exemple "allergènes" 


Je ne suis pas du tout connaisseuse des macros et j'avoue ne pas comprendre grand chose aux codes que je vois et sur lesquels je vois écrit "à adapter" . Ne sachant même pas à quoi correspond chaque terme, j'ai bien du mal à adapter à mon fichier... Si quelqu'un pouvait m'aider ce serait vraiment super !

Merci d'avance :)

Lana

Posté le 7 septembre 2021, 16:45
par Lana1928
Répondre
1

Bonjour,

Un début de réponse :

Sub Ingrédients()

For Each C In Range("A1:A5") ' zone de la liste des ingrédients

Texte_Cherché = C

    For Each R In Range("A10:A20") ' zone dans laquelle la recherche se fait

        If InStr(1, R, C) > 0 Then

'        MsgBox "Cherché " & Texte_Cherché & " dans " & R

           R.Characters(InStr(1, R, C), Len(C)).Font.Bold = True

           

        End If

    Next

Next

End Sub


ouisansdoute Posté le 21 septembre 2021, 16:29
par ouisansdoute

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :