J'aimerais pouvoir mettre un ou deux mots spécifiques en gras dans ma phrase lorsque j'utilise une formule concaténée. Un exemple est présenté ci-dessous.
La première phrase utilise la formule concaténée. La deuxième phrase est tapée et formatée manuellement. Existe-t-il un moyen d'avoir cette mise en forme dans la formule de concaténation sans avoir à le faire manuellement à chaque fois?
Veuillez noter qu'il ne s'agit que d'un exemple et que je devrai peut-être l'utiliser pour mettre une chaîne de trois mots consécutifs en gras dans une phrase différente. Si une règle générale était fournie pour que je puisse travailler en avant, ce serait formidable!
Je maîtrise un peu les formules mais je n'ai jamais utilisé VBA. Cependant, je soupçonne que la solution à ce problème n'est disponible qu'avec VBA. Veuillez être attentif si une solution VBA est requise, car il me faudra du temps et des efforts pour démarrer et comprendre.
Merci pour votre temps et votre aide.
Éditer:
Public Sub ExampleConcatenate()
Dim str1 As String, str2 As String, str3 As String, str4 As String, str5 As String, str6 As String
str1 = "First string "
str2 = "Second string "
str3 = "Third string"
str4 = "Fourth string "
str5 = "Fifth string "
str6 = "Sixth string"
Range("A1").Value = str1 & str2 & str3 & str4 & str5 & str6 'concatenate strings
'format bold starts 1 character after str1 and is as long as str2
Range("A1").Characters(Start:=Len(str1) + 1, Length:=Len(str2)).Font.Bold = True
End Sub
Comment étendre la partie finale pour rendre les quatrième et sixième cordes audacieuses?
Vous ne pouvez pas mettre en forme des caractères individuels dans un texte de cellule si cette cellule contient une formule.
Excel ne prend pas en charge cela.
La seule solution consiste à écrire ce texte de cellule sous la forme texte constant (avec VBA) au lieu d'une formule (si cela répond à vos besoins).
Ensuite, vous pouvez formater des caractères individuels avec:
Range("A1").Characters(Start:=1, Length:=10).Font.Bold = True
Donc, pour formater partiellement une chaîne, vous pouvez ajuster l'exemple suivant
Public Sub ExampleConcatenate()
Dim str1 As String, str2 As String, str3 As String
str1 = "First string "
str2 = "Second string "
str3 = "Third string"
Range("A1").Value = str1 & str2 & str3 'concatenate strings
'format bold starts 1 character after str1 and is as long as str2
Range("A1").Characters(Start:=Len(str1) + 1, Length:=Len(str2)).Font.Bold = True
End Sub
Pour plus de sous-chaînes, il serait plus facile d'utiliser un tableau.
Public Sub ExampleConcatenate()
Dim SubStrings As Variant
SubStrings = Array("First string ", _
"Second string ", _
"Third string ", _
"Fourth string ", _
"Fifth string ", _
"Sixth string")
Range("A1").Value = Join(SubStrings, "")
'Note array counting starts with 0 not 1 so "First string" is SubStrings(0)
'format bold starts 1 character after str1 and is as long as str2
Range("A1").Characters(Start:=Len(SubStrings(0)) + 1, Length:=Len(SubStrings(1))).Font.Bold = True
'format sub string 4
Range("A1").Characters(Start:=Len(SubStrings(0)) + Len(SubStrings(1)) + Len(SubStrings(2)) + 1, Length:=Len(SubStrings(3))).Font.Bold = True
'format sub string 6
Range("A1").Characters(Start:=Len(SubStrings(0)) + Len(SubStrings(1)) + Len(SubStrings(2)) + Len(SubStrings(3)) + Len(SubStrings(4)) + 1, Length:=Len(SubStrings(5))).Font.Bold = True
End Sub