Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment mettre en gras par VBA une partie d'une cellule ?

7 réponses
Avatar
François
Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de données
contenues dans divers autres cellules, mais qui ne contient plus de formules
par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans formule,
comme les nom et prénom, le nom de l'entreprise, ou le nom de la compagnie
d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras, du
caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François

7 réponses

Avatar
LSteph
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de données
contenues dans divers autres cellules, mais qui ne contient plus de formules
par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans formule,
comme les nom et prénom, le nom de l'entreprise, ou le nom de la compagnie
d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras, du
caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François




Avatar
François
Bonjour LSteph,

Merci pour ta réponse,

J'ai ainsi programmé, pour le texte de la cellule A7 qui suit :
"Nous soussigné COMPAGNIE.S.A., représenté par Jean DUPONT, certifions par
la présente que Monsieur Guillaume DURAND bénéficie, à titre obligatoire,
des garanties de prévoyance souscrites par la Société PEUGEOT auprès de AXA
sous le numéro de conventions 444 4444 depuis le 1 octobre 2007 et ce,
conformément aux dispositions des articles 83 du C.G.I. et L.120 du Code de
la Sécurité Sociale."

- le code que j'ai fait ne bloque pas, mais ne met rien en gras ! Je ne
comprends pas pourquoi ?

phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)
For i = 1 To total ' recherche le nom du salarié
espace = InStr(phrase, "présente que") + 13
espaces = InStr(phrase, "a bénéficié") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche le nom de la Société
espace = InStr(phrase, "Société") + 8
espaces = InStr(phrase, " auprès") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche la date de garanties de Prévoyance
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = espaces To total ' recherche la date de garanties de Santé
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i

"LSteph" a écrit dans le message de news:
%
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de
données contenues dans divers autres cellules, mais qui ne contient plus
de formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans
formule, comme les nom et prénom, le nom de l'entreprise, ou le nom de la
compagnie d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras,
du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François




Avatar
LSteph
Re,

;-)

je n'ai pas approfondi mais t'as juste un grain de sable pour commencer:

Cells(7,1) devrait convenir mieux que Cells(1,7)
s'agissant d'A7 et non de G1

--
lSteph

Bonjour LSteph,

Merci pour ta réponse,

J'ai ainsi programmé, pour le texte de la cellule A7 qui suit :
"Nous soussigné COMPAGNIE.S.A., représenté par Jean DUPONT, certifions par
la présente que Monsieur Guillaume DURAND bénéficie, à titre obligatoire,
des garanties de prévoyance souscrites par la Société PEUGEOT auprès de AXA
sous le numéro de conventions 444 4444 depuis le 1 octobre 2007 et ce,
conformément aux dispositions des articles 83 du C.G.I. et L.120 du Code de
la Sécurité Sociale."

- le code que j'ai fait ne bloque pas, mais ne met rien en gras ! Je ne
comprends pas pourquoi ?

phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)
For i = 1 To total ' recherche le nom du salarié
espace = InStr(phrase, "présente que") + 13
espaces = InStr(phrase, "a bénéficié") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche le nom de la Société
espace = InStr(phrase, "Société") + 8
espaces = InStr(phrase, " auprès") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche la date de garanties de Prévoyance
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = espaces To total ' recherche la date de garanties de Santé
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i

"LSteph" a écrit dans le message de news:
%
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de
données contenues dans divers autres cellules, mais qui ne contient plus
de formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans
formule, comme les nom et prénom, le nom de l'entreprise, ou le nom de la
compagnie d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras,
du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François








Avatar
François
Confus,

Oui, je le suis - quoique je ne puisse le mettre sur le compte d'un
quelconque Beaujolais nouveau, ou "ersatz"...

J'ai rectifié le tir, mais, horreur-malheur, rien n'y fait !

Help ...

Merci

François
N.B. je peux mettre mon fichier en Cjoint le cas échéant ...

"LSteph" a écrit dans le message de news:

Re,

;-)

je n'ai pas approfondi mais t'as juste un grain de sable pour commencer:

Cells(7,1) devrait convenir mieux que Cells(1,7)
s'agissant d'A7 et non de G1

--
lSteph

Bonjour LSteph,

Merci pour ta réponse,

J'ai ainsi programmé, pour le texte de la cellule A7 qui suit :
"Nous soussigné COMPAGNIE.S.A., représenté par Jean DUPONT, certifions
par la présente que Monsieur Guillaume DURAND bénéficie, à titre
obligatoire, des garanties de prévoyance souscrites par la Société
PEUGEOT auprès de AXA sous le numéro de conventions 444 4444 depuis le 1
octobre 2007 et ce, conformément aux dispositions des articles 83 du
C.G.I. et L.120 du Code de la Sécurité Sociale."

- le code que j'ai fait ne bloque pas, mais ne met rien en gras ! Je ne
comprends pas pourquoi ?

phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)
For i = 1 To total ' recherche le nom du salarié
espace = InStr(phrase, "présente que") + 13
espaces = InStr(phrase, "a bénéficié") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche le nom de la Société
espace = InStr(phrase, "Société") + 8
espaces = InStr(phrase, " auprès") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche la date de garanties de Prévoyance
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = espaces To total ' recherche la date de garanties de Santé
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i

"LSteph" a écrit dans le message de news:
%
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de
données contenues dans divers autres cellules, mais qui ne contient
plus de formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans
formule, comme les nom et prénom, le nom de l'entreprise, ou le nom de
la compagnie d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en
gras, du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François









Avatar
Mishell
bonjour.

Sub test()
phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)

a = "présente que"
espace = InStr(phrase, a) + Len(a)
espaces = InStr(phrase, "bénéficie") - 1
longueur = espaces - espace
With Cells(7, 1).Characters(Start:=espace, Length:=longueur).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With

a = "Société"
espace = InStr(phrase, a) + Len(a)
espaces = InStr(phrase, "auprès") - 1
longueur = espaces - espace
With Cells(7, 1).Characters(Start:=espace, Length:=longueur).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With


End Sub


Mishell

"François" wrote in message
news:
Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de données
contenues dans divers autres cellules, mais qui ne contient plus de
formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans formule,
comme les nom et prénom, le nom de l'entreprise, ou le nom de la compagnie
d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras,
du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François



Avatar
LSteph
Bonjour,


Explication plus bas de ce qui ne va pas.
Voici pour les deux premières occurences, tu corrigeras le reste (ou ton
texte)

''''''''''''''''
Sub aza()
Dim phrase As String, départ As Long, longueur As Long
With [A7]
.Font.FontStyle = "Normal"
phrase = .Value ' pour la mise en gras dans la cellule A7

départ = InStr(phrase, "présente que") + 13
longueur = InStr(phrase, "bénéficie") - 1
With .Characters(Start:=départ, Length:=longueur - départ).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With

départ = InStr(phrase, "Société") + 8
longueur = InStr(phrase, "auprès") - 1
With .Characters(Start:=départ, Length:=longueur - départ).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With

End With
End Sub
'''''''''''

'Pas besoin de For i..machin on a déjà le with et instr qui détermine la
'longueur
'our avoir la longueur il faut soustraire la valeur du point de départ
'Ton codecherche a bénéficié
'dans le texte c'est bénéficie
'si tu cherche " auprès" c'est différent de "auprès"
'avec ou sans espace le -1 s'applique ou pas.
'Ensuite jusqu'au , il n'y a pas cela dans ton texte!

'lSteph



Bonjour LSteph,

Merci pour ta réponse,

J'ai ainsi programmé, pour le texte de la cellule A7 qui suit :
"Nous soussigné COMPAGNIE.S.A., représenté par Jean DUPONT, certifions par
la présente que Monsieur Guillaume DURAND bénéficie, à titre obligatoire,
des garanties de prévoyance souscrites par la Société PEUGEOT auprès de AXA
sous le numéro de conventions 444 4444 depuis le 1 octobre 2007 et ce,
conformément aux dispositions des articles 83 du C.G.I. et L.120 du Code de
la Sécurité Sociale."

- le code que j'ai fait ne bloque pas, mais ne met rien en gras ! Je ne
comprends pas pourquoi ?

phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)
For i = 1 To total ' recherche le nom du salarié
espace = InStr(phrase, "présente que") + 13
espaces = InStr(phrase, "a bénéficié") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche le nom de la Société
espace = InStr(phrase, "Société") + 8
espaces = InStr(phrase, " auprès") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche la date de garanties de Prévoyance
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = espaces To total ' recherche la date de garanties de Santé
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i

"LSteph" a écrit dans le message de news:
%
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de
données contenues dans divers autres cellules, mais qui ne contient plus
de formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans
formule, comme les nom et prénom, le nom de l'entreprise, ou le nom de la
compagnie d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en gras,
du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François








Avatar
François
Bonjour,

Merci à toi et à Mishell

J'ai réussi à le faire fonctionner après quelques petites adaptations.
Tu as raison quant aux erreurs sur "bénéficie" /"a bénéficié" et autres...
En fait, le programme s'applique sur 2 types de pages très proches où sont
mis en gras les mêmes éléments.
La page "certificat d'assurance" recherche"bénéficie", alors la page
"attestation" recherche "a bénéficié".

Pour mettre la question de manière la plus concise possible, j'ai (mal)
tronqué l'ensemble du code, d'où cette incohérence apparente ...

Merci encore

François
"LSteph" a écrit dans le message de news:
%
Bonjour,


Explication plus bas de ce qui ne va pas.
Voici pour les deux premières occurences, tu corrigeras le reste (ou ton
texte)

''''''''''''''''
Sub aza()
Dim phrase As String, départ As Long, longueur As Long
With [A7]
.Font.FontStyle = "Normal"
phrase = .Value ' pour la mise en gras dans la cellule A7

départ = InStr(phrase, "présente que") + 13
longueur = InStr(phrase, "bénéficie") - 1
With .Characters(Start:=départ, Length:=longueur - départ).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With

départ = InStr(phrase, "Société") + 8
longueur = InStr(phrase, "auprès") - 1
With .Characters(Start:=départ, Length:=longueur - départ).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With

End With
End Sub
'''''''''''

'Pas besoin de For i..machin on a déjà le with et instr qui détermine la
'longueur
'our avoir la longueur il faut soustraire la valeur du point de départ
'Ton codecherche a bénéficié
'dans le texte c'est bénéficie
'si tu cherche " auprès" c'est différent de "auprès"
'avec ou sans espace le -1 s'applique ou pas.
'Ensuite jusqu'au , il n'y a pas cela dans ton texte!

'lSteph



Bonjour LSteph,

Merci pour ta réponse,

J'ai ainsi programmé, pour le texte de la cellule A7 qui suit :
"Nous soussigné COMPAGNIE.S.A., représenté par Jean DUPONT, certifions
par la présente que Monsieur Guillaume DURAND bénéficie, à titre
obligatoire, des garanties de prévoyance souscrites par la Société
PEUGEOT auprès de AXA sous le numéro de conventions 444 4444 depuis le 1
octobre 2007 et ce, conformément aux dispositions des articles 83 du
C.G.I. et L.120 du Code de la Sécurité Sociale."

- le code que j'ai fait ne bloque pas, mais ne met rien en gras ! Je ne
comprends pas pourquoi ?

phrase = [A7] ' pour la mise en gras dans la cellule A7
total = Len(phrase)
For i = 1 To total ' recherche le nom du salarié
espace = InStr(phrase, "présente que") + 13
espaces = InStr(phrase, "a bénéficié") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche le nom de la Société
espace = InStr(phrase, "Société") + 8
espaces = InStr(phrase, " auprès") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = 1 To total ' recherche la date de garanties de Prévoyance
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i
For i = espaces To total ' recherche la date de garanties de Santé
espace = InStr(phrase, "jusqu'au") + 9
espaces = InStr(phrase, ", des garanties") - 1
With Cells(1, 7).Characters(Start:=espace, Length:=espaces).Font
.Name = "Book Antique"
.FontStyle = "Gras"
.Size = 11
End With
Next i

"LSteph" a écrit dans le message de news:
%
Bonsoir,

With ActiveCell.Characters(Start:, Length:).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12

End With

'lSteph

Bonjour à tous,

J'ai une cellule qui contient un texte (fait en partie à partir de
données contenues dans divers autres cellules, mais qui ne contient
plus de formules par le biais d'un collage spécial/valeur).

Je voudrais mettre en gras certains mots de ce texte, devenu sans
formule, comme les nom et prénom, le nom de l'entreprise, ou le nom de
la compagnie d'assurance.

Avec la fonction InStr j'arrive bien à localiser les 1er et derniers
caractères de chaque groupe de mots à mettre en gras.
Mais comment le paramétrer en VBA ? Par exemple, comment mettre en
gras, du caractère 10 au caractère 20 de la cellule A1 par exemple ?

Je sèche !

Merci à tous

François