XL 2010 FONCTION EXCEL VERS MACRO

zozo

XLDnaute Junior
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.
 

Fichiers joints

Dudu2

XLDnaute Impliqué
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:

zozo

XLDnaute Junior
Merci pour la réponse, mais la solution que je cherche, c de réécrire la fonction en vb.
 

Dudu2

XLDnaute Impliqué
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%))))))
 

zozo

XLDnaute Junior
Ces chiffres représente le début et la fin de chaque palier, et reste invariable.
 

Dudu2

XLDnaute Impliqué
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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas