[VBA] - 1 cellule - plusieurs éléments à mettre en gras

Bonjour,

Tout d'abord, je tiens à vous souhaiter tous mes vœux de bonheur pour cette nouvelle année qui commence !

En 2019 beaucoup des membres de ce forum m'ont aidé sur mes différents projets, lesquels devraient être finalisés en 2020 ! Sans leur aide je ne serais probablement pas arrivé si loin et, surtout, en si peu de temps !

Mon souci du jour viens du fait que je cherche à mettre en gras des éléments entre parenthèses. La complexité vient du fait qu'il y a plusieurs parties à mettre en gras... Et pour ça je ne vois pas comment m'y prendre. Mes différents tests n'ont pas permis de mettre en gras chaque mot concerné.

Je ne peux pas utiliser un nombre de caractère fixe, car les données présentes dans la cellule varient constamment.

Je joins un document à ce post, pour mieux illustrer le résultat espéré.

Par ailleurs, ce qui est inscrit dans la cellule doit pouvoir être utilisé dans un document word, malheureusement, je ne peux pas copier-coller simplement le texte car la mise en forme ne suit pas. Y-a t-il une solution pour conserver la mise en forme du texte et le style lors d'un copier-coller ?

(Le renseigner dans une zone de texte ?)

Merci de votre attention,

Bon après-midi !

2texte-en-gras.xlsx (10.99 Ko)

Bonsoir Le Drosophile,

Voici ton fichier modifié pour le besoin exprimé.

L'exemple a été réalisé pour la cellule B2 ou figure ton texte. Il est transposable à toute cellule à condition:

soit de le préciser dans le code,

soit de fixer sa réalisation sur la cellule active. Donc une légère adaptation à ce code.

Avant de cliquer sur le bouton mettre en gras.

Bons tests, bonne continuation et bonne Année.

Bonjour,

Je vous remercie pour votre aide

Sur le document de travail, cela fonctionne, en revanche, si je l'utilise dans mon document complet, il y a une erreur sur cette ligne : nb = Len([b2]): [b2].Select

J'ai modifié la ligne comme ceci : nb = Len(Cells(2, 2))

Puis l'ensemble du code en conséquence.

Sub CarGras()
Dim s%, c%, FinTitre%, Deb%, Fin%
Set ws6 = Worksheets("Synthèse ZH")
Application.ScreenUpdating = False

Deb = 0: Fin = 0
With ws6
nb = Len(.Cells(2, 2))
    For s = 1 To nb
        If Mid(.Cells(2, 2), s, 1) = Chr(10) Then FinTitre = s: Exit For
    Next s
        For c = s To nb
            If Mid(.Cells(2, 2), c, 1) = "(" Then Deb = c
            If Mid(.Cells(2, 2), c, 1) = ")" Then Fin = c - Deb
            If Deb > 1 And Fin > 1 Then ActiveCell.Characters(Start:=Deb, Length:=Fin).Font.FontStyle = "Gras": Deb = 0: Fin = 0
        Next c
    ActiveCell.Characters(Start:=1, Length:=FinTitre).Font.FontStyle = "Gras"
End With
Application.ScreenUpdating = True
End Sub

Il reste un souci

Dans son exécution, le code utilise les "Chr(10)" ; ce qui fonctionne bien, uniquement si j'ai double cliqué au préalable sur la cellule. En effet, avant cela toutes les phrases sont collées entre-elles. Si je veux que les saut de ligne apparaissent, il me faut double cliquer sur la cellule B2. Sauf qu'en l'occurrence, votre code, qui met en gras certaines parties de la cellule, s'exécute à la suite de mon code, avant que je ne double clique sur la cellule.

C'est assez bizarre comme problème, je vais me renseigner pour trouver une solution et je posterai à la suite si je trouve !

Merci encore

A plus tard !

Bonjour,

Le seul point que j'ai modifié dans mon code dernièrement c'est au sujet de la variable Fin. Il faut changer par Fin = C + 1 - Deb.

Cela afin que ma parenthèse fermante soit aussi en gras. Le soir à la tombée du jour sous un ciel maussade c'était moins évident à repérer. Mais ce jour je le remarque. Cela corrige peu mais c'est plus juste.

Par contre pour ton souci de codes se lançant en même temps. Je ne vois pas. Tout dépend comment tu l'as intégré.

Ah oui merci ! J'avais vu ça et comptais m'en occuper un peu plus tard

Pour illustrer la situation, voici un document "exemple" ci-joint.

Vous pourrez voir à quoi ressemble le texte lorsqu'il a été généré par mon code.

A ce stade, si votre code est lancé, il ne fonctionne pas correctement et les caractères ne sont pas mis en gras comme souhaité.

En revanche, si on double clique sur la cellule B2, alors des phrases sont bien organisées et là, votre code fonctionne très bien !

A plus tard

4exemple.xlsm (19.89 Ko)

Bonsoir Le Drosophile,

J'ai téléchargé ton fichier et regarderais sous peu.

A suivre...

Bonjour,

Je n'avais pas bien compris ton code en fait. Pas de soucis à signaler, tout s'exécute comme voulu !

Bonne journée

Bonsoir,

Le code fonctionnais bien, jusqu'à mon dernier test, où je constate que l'une des infos à mettre en gras ne change pas.

J'ai beau lancer le code pas à pas, je ne vois vraiment pas ce qui doit être changé pour corriger ce souci bizarre.

Est-ce que vous voyez d'où ça pourrait venir ?

Je joins un document pour aider..

Bonne soirée !

A plus tard

Rechercher des sujets similaires à "vba elements mettre gras"