XL 2010 FONCTION EXCEL VERS MACRO

zozo

XLDnaute Occasionnel
Bien le bonjour à tous,
Besoin de votre intervention :
Je n'arrive pas à convertir les fonctions se trouvant dans la cellule A2 et A3 pour les exécuter par macro.
Merci de votre aide.
 

Pièces jointes

  • TEST.xlsm
    11.7 KB · Affichages: 21

Dudu2

XLDnaute Barbatruc
Bonjour,
VB:
Sub a()
    MsgBox Application.Evaluate(ActiveSheet.[A2].Formula)
    MsgBox Application.Evaluate(ActiveSheet.[A3].Formula)
End Sub
Application.Evaluate() utilise la version anglo-saxone de la formule.

Il n'est pas nécessaire d'avoir une formule stockée dans une cellule, la formule évaluée peut-être une simple chaine de caractères.
Ainsi tu peux fabriquer un "template" de formule en string "=IF(<machin>=<truc>,1,0)" puis selon tes besoins faire des Replace de <machin> et de <truc> avec les valeurs souhaitées avant de l'évaluer.
Cordialement de dudu à zozo
1593439812236.gif
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Ok , alors là il faut reproduire chaque test et SURTOUT passer en paramètres tous les éléments variables qui composent la formule dont les candidats potentiels sont:
A2, 135000, 34750, 45000, 29500, 30%, 43750, 2250,20%; 37500, 12%, 30000, etc...
A moins que ces chiffres soient des constantes invariables et que seule A2 soit la partie variable ?

=SI(A2>135000;(34750+(A2-135000)*35%);SI(ET(A2>45000;A2<=135000);(29500+(A2-135000)*30%);SI(ET(A2>43750;A2<=45000);(2250+(A2-43750)*20%);SI(ET(A2>37500;A2<=43750);(2250+(A2-43750)*12%);SI(ET(A2>30000;A2<=37500);((A2-30000)*20%))))))
 

Dudu2

XLDnaute Barbatruc
VB:
Sub a()
    MsgBox f(40000)
    MsgBox f(20000)
End Sub

Function f(v As Long) As Long
    If v > 135000 Then
        f = 34750 + (v - 135000) * 0.35
    ElseIf v > 45000 And v <= 135000 Then
        f = 29500 + (v - 135000) * 0.3
    ElseIf v > 43750 And v <= 45000 Then
        f = 2250 + (v - 43750) * 0.2
    ElseIf v > 37500 And v <= 43750 Then
        f = 2250 + (v - 43750) * 0.12
    ElseIf v > 30000 And v <= 37500 Then
        f = (v - 30000) * 0.2
    Else
        f = -1
    End If
End Function
 

Discussions similaires

Réponses
8
Affichages
133
Réponses
6
Affichages
328

Statistiques des forums

Discussions
312 024
Messages
2 084 722
Membres
102 638
dernier inscrit
TOTO33000