Une piste -> nommer la cellule qui contient la valeur (et lui donner le nom x) L'utilisateur peut alors écrire sa formule en respectant les conventions d'Excel du genre "=3*x+2" Pas besoin de passer par Visual basic pour cette étape. Bon courage
OUi, ça j'ai réussi... je progresse! Effectivement je ne suis pas passé par le code... Maintenant je n'arrive pas à reprendre la fonction dans une autre cellule: la cellue A1 a la fonction: x*2 par exemple... Je n'arrive pas a allé dans une autre cellule: =A1, et qu'il me renvoie la valeur de f(x), c'est seulement si je tape =x*2 qu'il me renvoie la valeur numérique.
Bon, c'est un petit défit pour moi. Je n'arrive vraiment pas: je fais ça dans le cadre d'un nouveau cours sur la recherche dicotomique (je ne sais plus l'orthographe). Le prof nous a demandé de "réfléchir" pour pouvoir trouver des intervalles avec excel. C'est pas très difficile, il suffit d'écrire une fonction et la fonction Si() qu'on répète antant de fois que voulu.
Mais dans mon orgueil personnel, je voulais toucher au code VBA, ce que je trouve un poil plus drôle; Je n'ai fait que jusqu'ici du dév web. Et je veux faire maintenant un mini-programme où je n'est lplus qu'à taper ma fonction, mon intervalle, et le nombre de fois que je veux qu'il exécute un affinement. Donc je ne suis tenu à rien, et puisque je m'énerve et que je n'arrive pas, je vais faire une dernière tentative avant d'abandonner. On apprend pas à programmer en deux jours...
Voilà mon idée de base:
une plage de saisie pour la fonction f(x), une pour la borne inférieure de l'intervalle= min, borne supérieure= max, La précision= préc. Un bouton appel ma fonction:
// d'abord une fonction qui vérifie que ma fonction est continue dans l'intervalle, si vrai, alors appel
de la fonction ma_fonction()
Sub ma_fonction()
Dim Encore As Boolean
Dim min
As Single, max
As Single, milieu
As Single 'milieu et le milieu de l'intervalle,
'formant les deux nouvelles intervalles
Encore=true
min = Range("cellule_de_min").Value
max = Range("cellule_de_max").Value
While Encore=true
milieu = (max-min/2)+min
If f(min)*f(milieu)<0
'si valeur négatif, donc pas le même signe,
' donc la réponse se trouve dans cette intervalle
max = milieu
Else If
min = milieu
End if
encore = (max-min)>préc
End While
End Sub
La syntaxe n'est pas forcément respectée car je n'ai pas encore tout "traduit" en VBA. Il me restait à trouver le moyen d'écrire à chaque tour l'intervalle (j'imagine return min...).
Mais le plus, c'est ma fonction,
je n'ai aucune idée pour dire que f(x) est la chaîne de caractère d'une cellule... j'ai essayé function f(x) as single
// ici pas mal d'instructions testées comme .evaluate ou calculate// end function.
Est ce que je suis complétement à côté? Oû il y a un semblant d'espoir?