Bonjour à tous,
J'ai une macro qui permet de déclencher le Solver pour résoudre une équation selon des variables. Le résultat est donné dans une cellule A1.
ça marche très bien, sauf que je souhaiterai lancer une autre macro une fois que le resultat est donné en A1.
J'utilisais jusqu'à présent la procédure worksheet calculate qui permet de détecter le changement de valeur dans une cellule selon le code issu de ce site: http://xcell05.free.fr/pages/prog/ev....htm#Calculate
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 ' Dans le module objet de Feuil1 : Public ValPrec Private Sub Worksheet_Calculate() Vérif End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Vérif End Sub Private Sub Vérif() If VarType(Range("A1")) = VarType(ValPrec) Then _ If ValPrec = Range("A1") Then Exit Sub MsgBox "Cellule A1 passe de " & CStr(ValPrec) & _ " vers " & CStr(Range("A1")) ValPrec = Range("A1") End Sub ' Dans le module de code ThisWorkbook : Private Sub Workbook_Open() Feuil1.ValPrec = Feuil1.Range("A1") End Sub
ça marche très bien si je n'utilise pas le solver.
En fait, le Solver "cherche" la valeur la plus approchée pour résoudre une equation, il balaie donc une plage de valeur.
Cela prend très peu de temps, mais lorsque l'on dit à Excel "lance la macro si la cellule A1 change de valeur", il ne va pas "attendre" que le Solver ait terminé et va lancer la macro dès les premieres valeurs que le Solver balaie et qui sont visibles en A1.
Par exemple, lorsque je lance le solver, en A1 va s'afficher très vite les nombres de 1 à 10 pour faire simple, et le resultat est 10. Il ne passe pas directement de 1 à 10. Cela veut dire que ma macro se lancera dès qu'il détectera un changement de valeur dans A1, c'est à dire quand il passera de 1 à 2 et non quand A1 sera égale à 10.
Comment résoudre ce problème?
peut on imaginer une détection de variation de valeur dans une cellule et quand elle ne varie plus, alors on peut lancer la macro?
ou alors il y a plus simple?
merci à tous!
Partager