VBA Fonction mathématique avec paramétrage

Bonjour,

je suis débutant en VBA et j'aimerais faire un programme qui demande à l'utilisateur de saisir une fonction et qui ensuite trace sa représentation graphique.

Jusque-là tout va bien, mais si ma chaîne de caractère contient un caractère autre que "x" et "e" elle doit le détecter comme paramètre de cette fonction mathématique et donc demande à l'utilisateur de saisir la valeur de ce paramètre et la place dans la première cellule non vide d'une colonne dédiée au paramètres. Le problème et que mon bout de code si je le recopie pour vérifier tous mes caractères possibles, alors il plante et c'est le drame.

Code que j'ai écrit

option Explicit
sub main()
Dim Vide As Boolean
Dim Fonction As String
Vide = False
      If RechercheCar(Fonction, "a") = True Then
        i = 13'Ma recherche de cellule non vide commence à la ligne 13 de la colonne 1
        While Vide = False And i <= 37
            If Cells(i, 1).Text = "" Then
                Cells(i, 1).Value = "a"
                Vide = True
            End If
        Wend
        Cells(i, 2).Value = InputBox("Donnez la valeur de votre paramètre", "PARAMETRE", "2")
        If Cells(i, 2).Value = "" Then
            MsgBox "Vous n'avez pas saisi de valeur", vbCritical, "E R R E U R !"
            Exit Sub
        Else
            Fonction = Replace(Fonction, "a", Cells(i, 2).Value)
        End If
    End If
   End Sub

   Function RechercheCar(ByVal Fonction As String, ByVal Car As String) As Boolean
    RechercheCar = False
    If InStr(Fonction, Car) <> 0 Then
        RechercheCar = True
    End If
End Function

Merci beaucoup de votre aide car je suis en train de m'arracher les cheveux là-dessus depuis bien quelques jours

Bonjour,

à compléter selon le type des fonctions attendues.

La fonction retourne un tableau des paramètres à renseigner :

Sub test()
    Dim p, i As Long
    p = paramFn("3x^2+4bx+c")
    If UBound(p) >= 0 Then
        For i = 0 To UBound(p)
            Debug.Print p(i)
        Next i
    End If
End Sub

Function paramFn(fonction As String)
    Const num As String = "0;1;2;3;4;5;6;7;8;9;,;.;e;x;pi"
    Const operateur As String = "+;^;-;*;/;(;);[;];{;};=;sin;cos;tan"
    Dim op, i As Long
    paramFn = fonction
    op = Split(num, ";")
    For i = 0 To UBound(op)
        paramFn = Replace(paramFn, op(i), "")
    Next i
    op = Split(operateur, ";")
    For i = 0 To UBound(op)
        paramFn = Replace(paramFn, op(i), " ")
    Next i
    paramFn = Application.Trim(paramFn)
    paramFn = Split(paramFn, " ")
End Function

si tu dois demander x il faut le traiter séparément car je suis obligé de l'éliminer vu qu'il peut être accolé à une variable(comme +4bx)

eric

PS : mettre If UBound(p) >= 0 Then et non If UBound(p) > 0 Then

corrigé dans le post

Merci beaucoup ça marche très bien

Rechercher des sujets similaires à "vba fonction mathematique parametrage"