Re,
Suite à votre remarque j'ai modifié ma function pour remplacer la , par un . car evaluate ne prend pas la virgule en considération pour calculer.
Function Extract_F(x As String)
Dim chaine As String, caract As String, Expression As Variant, Signes As String
Dim i As Integer, Longueur As Integer, cel As Range
'Liste des signes
Signes = "(),.*-+/"
'La chaine complète et lenombre de caractères qu'elle contient
chaine = Range("C4")
Longueur = Len(chaine)
'Analyse de la chaine caractère par caractère pour constituer l'expression à calculer
For i = 1 To Longueur
caract = Mid(chaine, i, 1)
'Si une , est détectée elle doit être remplacée par un point car Evaluate ne calcule qu'avec un point
'comme séparateur décimal
If caract = "," Then caract = "."
If InStr(1, Signes, caract) Or IsNumeric(caract) Then
Expression = Expression + caract
End If
Next i
Extract_F = Evaluate(Expression)
End Function
Donc en D4 mettre =Extract_F(C4)
Et plus besoin du bouton alors