Function Total(ByVal x As String, Optional xNbr)
' à partir de termes séparés par un "+", on somme les termes numériques
' (après avoir remplacé les termes "D" par 12 et les termes "0" et "t"" par 10)
' si xNbr est absent, on renvoie le nombre de termes numériques sommés
' sinon on renvoie la somme des termes numériques
Dim elem, som, nbr
x = Application.Trim(Replace("+" & x, "+", " "))
For Each elem In Split(x)
Select Case elem
Case 0, "t": som = som + 10: nbr = nbr + 1
Case "D": som = som + 12: nbr = nbr + 1
Case Else
elem = Replace(elem, ".", ",")
If IsNumeric(elem) Then
som = som + 1 * elem
nbr = nbr + 1
End If
End Select
Next elem
If Not IsMissing(xNbr) Then Total = nbr Else Total = som
End Function