solveur sous VBA

altec

XLDnaute Nouveau
Salut,

Je souhaiterai résoudre sous VBA une équation du type : sum([X_i]^k_i,i=0..n) = 0.

Ce que j'ai fait sous VBA :
afficher chaque [X_i]^k_i
faire la somme grâce à une variable incrémentée à chaque fois
et à l'aide du solveur, résoudre l'équation

Malheureusement, il m'affiche toujours 0 comme solution, car dans la case où j'affiche la somme, j'ai un nombre et pas une formule faisant intervenir la cellule cible !

J'ai essayé de laisser la variable par exemple en notant "A1" au lieu Range("A1").Value, avec l'espoir, mais il m'affiche "erreur de type" lors de la compilation =/

Je ne sais pas comment faire, peut-être avez-vous une solution ?
Merci.
 

ROGER2327

XLDnaute Barbatruc
Re : solveur sous VBA

Bonjour altec
Je vois deux solutions : l'une par le solveur, sans VB ; l'autre par une fonction personnalisée en VBA, sans utiliser le solveur.
  1. L'une des deux formules suivantes en I6 vous permettra de trouver la réponse (0,915329676395087 à 4x10^7 près) avec le seul solveur.
    Code:
    =$F$4+SOMMEPROD($F$5:$F$9*$E$13^LIGNE($1:$5))
    
    =$F$4+$E$13*($F$5+$E$13*($F$6+$E$13*($F$7+$E$13*($F$8+$E$13*$F$9))))
  2. La fonction poly :
    VB:
    Function poly(r As Range, y#, Optional lim& = 100000)
      Application.Volatile '***
    Dim i&, f#, g#, d, p(), q()
      p = WorksheetFunction.Transpose(r.Value)
      q = p
      d = UBound(p)
      For i = 1 To d: q(i) = (i - 1) * q(i): Next
      Do
        f = 0
        For i = d To 1 Step -1: f = f * y + p(i): Next
        If Abs(f) < 0.0000000001 Then Exit Do
        g = 0
        For i = d To 2 Step -1: g = g * y + q(i): Next
        If g * lim = 0 Then poly = "?": Exit Do
        y = y - f / g
        lim = lim - 1
      Loop
      If poly <> "?" Then poly = y
    End Function
devrait faire l'affaire.


Syntaxe : =poly(F4:F9;1)

La valeur 1 est une valeur estimée au départ. Elle n'est pas critique, vous pouvez essayer d'autres valeurs.
Si la fonction renvoie ?, modifiez cette valeur estimée.
ROGER2327
#5086


Samedi 21 Pédale 138 (Saint Inscrit, Converti, SQ)
25 Ventôse An CCXIX
2011-W11-2T00:56:44Z
 
Dernière édition:

altec

XLDnaute Nouveau
Re : solveur sous VBA

Salut Roger,

Je te remercie grandement pour ta réponse. J'ai utilisé la première solution car la seconde m'était un peu compliquée à comprendre. Cela m'a donné l'idée d'enregistrer une macro, puis de regarder le code VBA. J'ai pu ensuite transposer la situation à mon problème.

MErci encore,
Altec.
 

Discussions similaires

Réponses
3
Affichages
315
Réponses
1
Affichages
144

Statistiques des forums

Discussions
312 679
Messages
2 090 860
Membres
104 677
dernier inscrit
soufiane12