Mettre en gras une partie du texte d'une cellule

Bonjour au forum,

J'essaie de mettre en gras la chaine de caractère précédent une parenthèse du texte de ma cellule en E24, mais tous les caractères se mettent en gras (et ce même si je modifie la variable "x" par une valeur numérique).

Pourriez-vous m'aider ?

Merci d'avance !

Sub MFCGRAS()

Dim x As Integer
Dim Cible As Range

Set Cible = Sheets("Quittance").Range("E24")

With Sheets("Quittance")
    x = InStr(1, Cible, "(")
    Cible.Font.Bold = False
    Cible.Characters(1, x).Font.Bold = True
End With

End Sub

bonjour,

je ne vois de problème avec cette macro. Si la parenthèse est trouvée, cela se met en gras jusqu'à la parenthèse. si elle n'est pas trouvée tout le texte de la cellule se met en gras.

Bonjour h2so4,

Merci pour la réponse.

Peut-être est-ce parce que la cellule cible contient une formule qui renvoie un nombre mélangée à du texte (qui contient une parenthèse) ?

Si c'est le cas, existe t'il une solution ?

Bonsoir Nrev74, H2So4,

Avec le code ci-dessous, c'est la partie entre les parenthèses ouvrante et fermante qui sera en gras.

Sub CarGras()
'Pour un texte en cellule B9, changer si autre case souhaitée
Application.ScreenUpdating = False
Deb = 0: Fin = 0
'Longeur du texte en B9 et sélection de cette case
Nb = Len([B9]): [B9].Select
'Boucle de recherche des caractères
For C = 1 To Nb
If Mid([B9], C, 1) = "(" Then Deb = C + 1
If Mid([B9], C + 1, 1) = ")" Then Fin = C - Deb + 1
Next C
'Formatage en gras de la partie entre les parenthèses
If Deb > 1 And Fin > 1 Then ActiveCell.Characters(Start:=Deb, Length:=Fin).Font.FontStyle = "Gras"
'ActiveCell.Characters(Start:=1, Length:=FinTitre).Font.FontStyle = "Gras"
Application.ScreenUpdating = True
End Sub

Bonjour X Cellus,

Merci pour la réponse.

J'ai contourné le problème en passant par une cellule intermédiaire.

J'imagine que la macro va piquer les yeux des experts mais cela fonctionne...

Merci pour votre aide, je garde votre procédure dans un coin, elle me sera très probablement utile !

Option Explicit

Sub MFCGRAS()

Dim x, y, z As Integer
Dim Cible1, Cible2, Cible3 As Range

Set Cible1 = Sheets("Quittance").Range("R14")
Set Cible2 = Sheets("Quittance").Range("R16")
Set Cible3 = Sheets("Quittance").Range("R18")

x = InStr(1, Cible1, "(")
y = InStr(1, Cible2, "(")
z = InStr(1, Cible3, "(")

Application.EnableEvents = False
With Sheets("Quittance")
    .Unprotect "mdp"
    With .Range("E24")
        .Font.Bold = False
        .Font.Italic = False
        .Value = Cible1
        .Characters(1, x - 1).Font.Bold = True
        .Characters(x - 1, 999).Font.Italic = True
    End With
    With .Range("E26")
        .Font.Bold = False
        .Font.Italic = False
        .Value = Cible2
        .Characters(1, y - 1).Font.Bold = True
        .Characters(y - 1, 999).Font.Italic = True
    End With
    With .Range("E28")
        .Font.Bold = False
        .Font.Italic = False
        .Value = Cible3
        .Characters(1, z - 1).Font.Bold = True
        .Characters(z - 1, 999).Font.Italic = True
    End With
    .Protect "mdp"
End With
Application.EnableEvents = True
End Sub

A nouveau,

Si tu n'as que 3 cellules à traiter, au moins tu auras fait le nécessaire.

Par contre pour une floppée de cellules il faudra penser à les traiter par une boucle vu que c'est le même schéma de traitement applicable.

Bonne continuation.

Rechercher des sujets similaires à "mettre gras partie texte"