Rendre un Goalseek automatique

jul51

XLDnaute Junior
Hello a tous,

Bon je vous explique brievement mon probleme:

J'ai un fichier excel qui price un produit financier en temps reelle. Malheureusement, pour ce type de pricing, j ai besoin d'utiliser un goalseek puisque aucune solution analytique direct n'existe. J'utilise donc un goalseek qui fonctionne tres bien.

Mais...il y a toujours un mais dans ce genre de truc, comme le pricing doit etre realise en live, j'aurais besoin que le goalseek soit lance a chaque recalcul idealement.

J'ai essaye avec Select change, change, calculate et dernierement ce genre de fonction:

Code:
Public Sub SolverIRS()

Application.EnableEvents = False

Worksheets("Data").Range("X52").GoalSeek Goal:=Worksheets("Data").Range("X53").Value, _
ChangingCell:=Worksheets("Data").Range("Y49")

End Sub

Public Function AutoCalcul(X As Double, Y As Double)

    If X <> Y Then
    
        Call SolverIRS
    
    Else
    
        AutoCalcul = "OK"
        
    End If

End Function

Le code est bien execute, le goalseek est lu mais n'est pas execute.....

je precise que si je lance le goalseek a la main, il fonctionne parfaitement.

Merci de votre aide.

PS: Je suis pas en france, mon clavier ne sait pas parler avec les accents sorry guys ;)

Julien
 

jul51

XLDnaute Junior
Re : Rendre un Goalseek automatique

Je viens de tester ca sans succes:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$X$52" And Not bIsBusy Then
    
       Worksheets("Data").Range("X52").GoalSeek Goal:=Worksheets("Data").Range("X53").Value, ChangingCell:=Worksheets("Data").Range("Y49")
    
    End If
    
End Sub

Edit: Avec un point d'arret, je viens de m'apercevoir que le code n'est meme pas lu.....alors que X52 change!!!
 
Dernière édition:

jul51

XLDnaute Junior
Re : Rendre un Goalseek automatique

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$Y$52" Then
    
       Worksheets("Data").Range("X52").GoalSeek Goal:=Worksheets("Data").Range("X53").Value, ChangingCell:=Worksheets("Data").Range("Y49")
    
    End If
    
End Sub

Avec ce code, ca marche mais je dois modifier la cellule Y52 manuellement!!

Moi je veux que le lancement soit fait a chaque recalcul F9 par exemple.
 

jul51

XLDnaute Junior
Re : Rendre un Goalseek automatique

Merci pour ton aide, ca marche parfaitement.

J'avais deja essaye mais sans les enable events=false donc ca tournait en boucle.

Pour info si ca interesse du monde:

Code:
Private Sub Worksheet_Calculate()

Application.EnableEvents = False

    Worksheets("Data").Range("X52").GoalSeek Goal:=Worksheets("Data").Range("X53").Value, _
ChangingCell:=Worksheets("Data").Range("Y49")

Application.EnableEvents = True

End Sub
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87