Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Rendre un Goalseek automatique

  • Initiateur de la discussion Initiateur de la discussion jul51
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jul51

Guest
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
 
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 modification par un modérateur:
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…