En fait la fonction VAL() affiche les chiffres d'une chaine de caractères mais s'arrete au 1er caractère non numérique à part l'espace (donc le point ici) c'est pour ça qu'elle ne prend pas après la virgule.
Si tes formules te retournent des chiffres, essais sans le VAL() en faisant :
t = t+ i.Value
Et si cela ne marche pas essais en remplacant ta fonction comme ceci (mais seulement si tes formules te retournent des chiffres sans texte):
Function SommeGras(champ As Range)
Application.Volatile
Dim i, t
t = 0
For Each i In champ
If i.Font.Bold = True Then
If IsNumeric(i) Then t = t + CDbl(i.Value)
End If
Next i
SommeGras = Round(t, 0)
End Function
Cordialement,