Fonction VBA accessible par Excel

  • Initiateur de la discussion serge:)
  • Date de début
S

serge:)

Guest
Bonjour,

Je vous retransmets ma question initiale avec quelques précisions mais c'est toujours la même question.

J'aimerais pouvoir invoquer dans une cellule d'Excel une fonction qui permet d'évaluer une formule (expression) qui implique des nombres avec virgule, des opérateurs (+-*/) et des parenthèses.

Cette fonction doit être développée en VBA car elle n'existe pas dans le monde Excel.

Par exemple, dans Excel, je pourrais invoquer la fameuse fonction comme suit :

=eval (A10) alors que A10 vaut par ex. la chaîne de caractères '1,23/4,56'

Ou encore :

=eval ('(3,1416/2)/5280')

Comment est-ce possible de faire ça simplement ?

En vous remerciant !
 

spi10n

XLDnaute Nouveau
Merci Laurent pour la fonction. Elle m'a permis d'investiguer sur le net ...

Après quelques recherches, voici une version un peu plus sophistiquée :

======
Public Function EVAL(expression As Variant) As Variant

Dim expEvaluee As Variant
Application.Volatile

On Error GoTo fonctionErronnee

If Not IsEmpty(expression) Then
If TypeOf Application.Caller.Parent Is Worksheet Then
expEvaluee = Application.Caller.Parent.Evaluate(CStr(expression))
Else
expEvaluee = Application.Evaluate(CStr(expression))
End If

If IsError(expEvaluee) Then
EVAL = CVErr(xlErrValue)
Else
EVAL = expEvaluee
End If
End If
Exit Function

fonctionErronnee:
EVAL = CVErr(xlErrNA)
End Function
======

serge:)
 

JJM

XLDnaute Occasionnel
Bonjour,

Attention à la gestion du point décimal, sous peine d'obtenir une erreur de type '#VALEUR', si la valeur du séparateur décimal définie dans Windows est la virgule (,).
Dans ce cas, au niveau de l'onglet 'International' de la commande 'options...' du menu 'Outils' d'Excel, il vaut mieux décocher la case 'Utiliser les séparateurs système' et fixer la valeur du champ 'Séparateur de décimale' à un point (.).
De plus, la saisie rapide de listes de nombres décimaux en sera facilitée, sans obliger à chercher la virgule à chaque fois.
 

Discussions similaires

S
Réponses
4
Affichages
1 K

Statistiques des forums

Discussions
312 650
Messages
2 090 518
Membres
104 564
dernier inscrit
MAV57