Bonjour à tous ,
Une autre fonction personnalisée en VBA avec mon interprétation perso.
J'ai considéré que ce qui nous intéressait était l'évaluation d’expressions algébriques comportant une combinaison de chiffres et signes parmi -+*/(), donc si la cellule contient :
- une formule alors on ne retourne rien
- une constante Vrai ou Faux alors on ne retourne rien
- une constante erreur alors on ne retourne rien
- une constante numérique alors on ne retourne rien
- une constante texte alors on retourne le résultat de la constante texte si elle est correcte. Dans le cas contraire on ne renvoie rien
- une constante texte qui est un nom défini (soit de portée classeur soit de portée feuille) alors on ne renvoie rien
La fonction s'appelle EvalAlgebric. Le seul argument à indiquer est la cellule source. Exemple : =EvalAlgebric(C3)
Le code est dans module1 :
Function EvalAlgebric(x As Range)
Dim y
On Error Resume Next
EvalAlgebric = ""
If x.Count <> 1 Then Exit Function
If IsError(x) Then Exit Function
If x = "" Or x.HasFormula Then Exit Function
If InStr("0123456789+-(", Left(Trim(x), 1)) > 0 Then
If IsNumeric(x) Then Exit Function
y = Application.Evaluate("=" & Replace(x, ",", "."))
If IsNumeric(y) Then EvalAlgebric = y: Exit Function
End If
End Function