Nad, merci bien.
J'ai comparé le premier fichier que tu m'as envoyé avec le second.
Dans le premier, quand je remplace la cellule G34 par un nombre quelconque, tout se met à jour automatiquement. C'est donc exactement ça que je veux comme tu l'avais bien compris.
Dans le second (celui avec la plage entière), c'est assez étrange.
Par exemple, je remplis G40 (puisque tu avais déjà rempli G34 à G39 [€t pourtant les lignes 37 à 39 n'ont pas leur résultat calculé automatiquement?]) et suivants avec les valeurs suivantes (G40:G43) (pour l'essai uniquement) : 10, 20, 500, 5000.
Rien ne s'affiche.
Par contre, si je remplis dans l'ordre G43:G40... quand je mets en G40 la valeur 10, c'est la formule de la ligne 39 qui s'active...
Si, les cellules G40 à 43 étant remplie comme précédemment indiqué, je reremplis la case G42 avec 500 (il y a déjà 500), c'est la ligne 41 qui se met à jour.
J'ai essayé de regarder à partir de ta formule sur le fichier où ça fonctionne parfaitement (le premier fichier avec une seule ligne) pour l'adapter mais j'arrive à rien, malgré que excel a une aide intéressante sur des mots aussi incompréhensibles que "range", "intersect", "not"...
Oké c'est bon.
j'ai trouvé un moyen de faire:
Dans le code de la page j'ai mis:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then
If Target.Row > 2 And Target.Row < 111 Then Call TradeScore
End If
End Sub
Dans le module
Sub TradeScore()
Dim lg As Integer
lg = 1
Application.ScreenUpdating = False 'This hides the visual process and speeds up
'the execution
Do
lg = lg + 1
If lg = 111 Then Exit Do
Range("H" & lg).GoalSeek Goal:=Range("I" & lg), ChangingCell:=Range("J" & lg)
Loop
Application.ScreenUpdating = True
End Sub
Je me suis basé sur un post en anglais. Il semble que ça fonctionne dès que je change quelque chose en G, ce qui était le case (et pour ceux qui se demandent, oui, j'ai modifié l'ordre des champs entretemps).