Exponentiel en Code VBA pour Excel : est-ce possible ?

Bonjour,

J'ai besoin d'aide en code VBA sous Excel.

De puis ce matin, je me torture l'esprit afin de,

__ dans un 1er temps, reproduire, en VBA, cette formule :

=B2*EXP(-(C2*D2))

__dans un 2ème temps, obtenir la réponse :

---------------------------------------------------------------------> dans la cellule (Range("E...") adéquate,

---------------------------------------------------------------------> dans la cellule active : ActiveCell,

---------------------------------------------------------------------> dans une boîte de message : MsgBox.

Points de blocage :

* Exp

* la Boîte de message ne s'affiche pas.

Voici dessous :

* le code que j'ai déjà réussi à réaliser toutefois, "Exp" bloque, (même en le remplaçant par "E")

* une copie de la fenêtre d'exécution

* le fichier excel support.

Je vous remercie par avance de vote aide.

Bien cordialement.

**************************************************************************************************************************

Function exponentiel()

' Function pour déterminer la concentration du vinaigre en fonction du temps qui passe
' (durée entre pose et test de vérification)

' Ci pour la concentration initiale (mg/L),
' d est la durée en heures
' vp est la constante de vitesse perte efficacité (unités de 1/h).
' Cf qui correspond à C(d) pour la Concentration finale de vinaigre après la durée (d).

Dim Ci As Double, vp As Double, d As Variant, Cf As Double, E As Double

Ci = Range("b2")
vp = 1
td = Application.InputBox("Indiquer le temps écoulé entre la pose du vinaigre et le test de concentration : ")
E = Exp
Cf = ActiveCell

' Cf = (Ci) * exp(-(d*vp ))

ActiveCell = (Ci * E(d)(-(d*vp)))
ActiveCell = FormatNumber(2,2)

MsgBox ("La concentration est de :" & ("Cf") & "")

End Function

efficacitevinaigre fenetreexecution

Bonjour,

Pas tout bien compris. il faut utiliser la fonction personnalisée comme une formule excel, c'est à dire écrire la formule dans la cellule de destination, qui est à la fois la cellule active. Je ne vois pas l'utilité du message.

Exemple le code de la fonction personnalisée:

Function CF(CI As Double, VP As Double, D As Date) As Double
' Fonction pour déterminer la concentration du vinaigre en fonction du temps qui passe
' (durée entre pose et test de vérification)

' Ci pour la concentration initiale (mg/L),
' d est la durée en heures
' vp est la constante de vitesse perte efficacité (unités de 1/h).
' Cf qui correspond à C(d) pour la Concentration finale de vinaigre après la durée (d).

CF = Round(CI * Exp(-(VP * D)), 2) 'Limité à 2 chiffres après la virgule
End Function

et la formule à inscrire en E2 puis à tirer vers le bas:

=cf(B2;C2;D2)

Cdlt

Bonjour Arturo83,

Je te remercie vraiment d'avoir pris du temps afin de m'aider.

Je teste actuellement, mais cela bloque, dès le départ ;-).

Par contre, en réalisant cela

Option Explicit

Sub data_input()
Dim Cf As Double
Cf = Round(efficacite(200, 0.5, 4), 0)
'-----> 'Cf = efficacite(200, 0.5, 4)
'Cf = Round(Ci, 0)
MsgBox ("La concentration est de :" & Cf)
End Sub

Function efficacite(Ci, pv, d)
Dim Cf As Double
Cf = Ci * Exp(-pv * d)
medicament = Cf
End Function

Il me reste à positionner aussi l'info dans l'ActiveCell

CF = efficacite(200, 0.5, 4)
CF = Round(C, 2)
ActiveCell = CF

Et ce sera fait.

Un grand merci à toi.

Bonne journée.

Essayez ceci, à copier dans le module de la feuille (et pas dans un module standard)

Dim Cf As Double
    Dim Ci As Double

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Target.Row > 1 And Target.Column = 5 Then
        Cf = Int(efficacite(200, 0.5, 4))
        MsgBox ("La concentration est de : " & Cf)
        Target.Value = Cf
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Function efficacite(Ci, pv, d) As Double
    efficacite = Ci * Exp(-pv * d)
End Function
Il suffit de faire un double clic sur l'une des cellules de la colonne E pour obtenir le résultat dans la cellule et dans la boîte de message.

Cdlt

Bonjour Arturo83,

Je te remercie de ton suivi.

De retour, je vais tester ta solution ce soir et te tiendrai informé.

A ce soir.

Alilu

Rechercher des sujets similaires à "exponentiel code vba possible"