Bonjour fanch55,
Merci pour ton aide, je m'excuse de ne répondre que maintenant.
Ta macro fonctionne
Je l'ai juste modifié un petit peu mais les dates sont bien en gras.
Encore merci à tous pour votre soutien.
Cordialement,
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim R As Range
Set R = Intersect(Target, Sh.Range("J1:J" & Sh.Rows.Count))
If R Is Nothing Then Exit Sub
Dim Texte: Texte = Array("BORNES VERRE", "BORNES PAPIERS", "BORNES EML", "BORNES OMR", "RAS", "PAV VETUSTE !", "PAV A CHANGER !", "Mise à jour du")
Dim Couleur: Couleur = Array(RGB(84, 130, 53), RGB(47, 117, 181), RGB(191, 143, 0), RGB(64, 64, 64), RGB(0, 0, 0), RGB(255, 0, 0), RGB(255, 0, 0), RGB(0, 0, 0))
Dim Gras: Gras = Array(True, True, True, True, True, True, True, True)
Dim Souligné: Souligné = Array(True, True, True, True, True, True, True, True)
Dim I As Integer
Dim J As Integer
For Each R In R 'si entrées multiples (copier-coller)
For I = 0 To UBound(Texte)
J = InStr(R, Texte(I))
If J Then
With R.Characters(J, Len(Texte(I))).Font
.Color = Couleur(I)
.Bold = Gras(I)
.Underline = Souligné(I)
End With
End If
Next
' On va traquer les dates ( il peut en avoir plusieurs dans la chaine )
W = R
For I = 1 To Len(R)
If Not (Mid(R, I, 1) = "/" Or IsNumeric(Mid(R, I, 1))) Then Mid(W, I, 1) = " "
Next
While InStr(W, " "): W = Replace(W, " ", " "): Wend
J = 0
For Each W In Split(Replace(Trim(W), " ", vbLf), vbLf)
If IsDate(W) Then
J = InStr(J + 1, R, W)
With R.Characters(J, Len(W)).Font
.Bold = True
.Underline = xlUnderlineStyleSingle
End With
End If
Next
Next
End Sub