1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Sub Chercher_Colorier_un_un(xrgTxt As Range, xrgQuoi As Range)
' On recherche le texte d'une seule cellule xrgQuoi
' dans le texte de LA cellule xrgTxt
' On recherche toutes les occurences et on leur applique la couleur
' et la graisse de xrgQuoi (caractère par caractère)
Dim n&, j&
If Len(xrgTxt) = 0 Or Len(xrgQuoi) = 0 Then Exit Sub
n = InStr(1, xrgTxt, xrgQuoi, vbTextCompare)
Do While n > 0
For j = 0 To Len(xrgQuoi) - 1
With xrgTxt.Characters(Start:=n + j, Length:=1).Font
.FontStyle = xrgQuoi.Characters(Start:=j + 1, Length:=1).Font.FontStyle
.Color = xrgQuoi.Characters(Start:=j + 1, Length:=1).Font.Color
End With
Next j
n = InStr(n + Len(xrgQuoi), xrgTxt, xrgQuoi, vbTextCompare)
Loop
End Sub
Sub Chercher_Colorier_un_liste(xrgTxt As Range, xrgQuoi As Range)
' idem précédent mais pour plusieurs textes à rechercher
' xrgTxt est une cellule et xrgQuoi est une plage de cellules
Dim xcell As Range
If Len(xrgTxt) = 0 Then Exit Sub
For Each xcell In xrgQuoi
If Len(xcell) > 0 Then Chercher_Colorier_un_un xrgTxt, xcell
Next xcell
End Sub
Sub Chercher_Colorier_plage_liste(xrgTxt As Range, xrgQuoi As Range)
' idem précédent mais on recherche au sein d'une plage de cellule xrgTxt.
' C'est le cas le plus général: on recherche au sein de toute la plage xrgTxt
' chaque mot de la plage xrgQuoi et on applique la mise en forme graisse et couleur
Dim xcell As Range, old As Boolean
old = Application.ScreenUpdating: Application.ScreenUpdating = False
For Each xcell In xrgTxt
Chercher_Colorier_un_liste xcell, xrgQuoi
Next xcell
Application.ScreenUpdating = old
End Sub |
Partager