Rapport de message :*
 

Re: Executer une macro suite à un calcul avec worksheet calculate

Titre du sujet : Re: Executer une macro suite à un calcul avec worksheet calculate
par myDearFriend! le 10/06/2010 14:52:40

Bonjour bluemoon91, le Forum,

Je me doutais bien que le problème tournait autour de ça...

Je vais donc essayer de te détailler le problème de mon point de vue :
Tu souhaites déclencher une macro sur changement de valeur d'une cellule particulière (C1), Ok.

Cela dit, comme tu as dû le remarquer, l'évenènement Change() ne se déclenche malheureusement pas lors d'un recalcul d'une formule.

Il te reste donc 2 alternatives :

- soit avoir recours à l'évènement Calculate(). Ca peut être une piste à suivre... sauf que pour moi cet évènement possède un souci majeur : il ne possède pas d'argument Target. Cet évènement se déclenche donc à chaque recalcul de la feuille, mais tu ne peux obtenir la cellule à l'origine de son déclenchement. Ce n'est pas une façon optimisé de faire les choses puisque tu vas systématiquement faire dérouler un traitement, même si le recalcul est déclenché par un autre évènement ou une autre cellule que celle visée. Si j'ai bonne mémoire, tu souhaitais déjà avoir une précision au millième pour ton chrono... avec de telle procédure en parallèle, tu risques fort de t'éloigner de ton objectif.

- soit conserver le recours à l'évènement Change() comme je te l'ai proposé et qui surveillera, non pas la cellule contenant la dite formule (C1), mais la ou les cellules à l'origine du recalcul de cette formule (donc A1 ou B1 dans l'exemple précédent). A noter que dans ce cas, A1 ou B1 peuvent être saisies directement par l'utilisateur ou bien modifiées via une macro VBA (ça fonctionnera aussi). Evidemment, ça ne fonctionnera plus si ces cellules sont elles-mêmes des formules, dans ce cas, il faudrait se pencher sur leur propres cellules dépendantes et ainsi de suite...

Tu n'as pas d'autres choix, c'est soit la première méthode (via Calculate), soit la deuxième (via Change sur les cellules en amont de la formule). Mais en tout cas, ce n'est pas les 2 en même temps comme je l'ai vu dans ton exemple précédent.

Sinon, j'entrevois une autre piste à suivre peut-être :
Citation :
bluemoon91 a écrit :
En fait, j'ai un chronometre qui enregistre en temps réel des temps intermédiaires dans une colonne. Au bout de X temps enregistré, cela lance une série d'opération qui me donne un résultat dans une cellule. Le but est qu'une macro se lance quand cette cellule est modifiée

... plutôt que de surveiller la modification de cette cellule résultante d'une série d'opérations, pourquoi ne pas t'intéresser directement à l'évènement qui va déclencher la dite série d'opérations... Autrement dit : au bout de X temps enregistrés, je lance une série d'opérations ET je contrôle le résultat qui lui même déclenchera cette fameuse macro si la condition est remplie.

Cordialement,