Il ne semble pas possible de signifier à Calc d’afficher un message seulement lorsqu’une cellule a pris sa valeur finale et non pas à chacune de ses valeurs intermédiaires. J’ai donc décidé de contourner le problème en appliquant le palliatif suivant. Cette solution peut paraître excessive, mais l’ordi nécessite environ 0,5 sec à 1 sec de traitement pour compléter le grand nombre de formules et de macros à exécuter à chaque cycle de calcul pour ce classeur. Ainsi, un (occasionnellement deux!) court message intermédiaire a le temps d’être vu et lu avant que le message final s’affiche et demeure visible jusqu’au clic du prochain bouton. Parfois ces deux ou trois messages successifs sont contradictoires, ce qui peut évidemment être déroutant pour l’utilisateur.
J’ai défini deux compteurs dans les cellules de la feuille : le compteur DÉBUT DE CYCLE DE CALCUL et le compteur FIN DE CYCLE DE CALCUL. Chacun de ces compteurs est réglé à 0 au début, lorsque le classeur est ouvert.
Pour chacune des cellules concernées par ce problème d’affichage de valeurs intermédiaires j’ai identifié la macro qui est exécutée lorsque son bouton est cliqué, donc au début de son cycle de calcul. J’ai également déterminé la macro qui est exécutée à la fin (ou aussi proche que possible de la fin) de son cycle de calcul. J’ai également vérifié pour chacune de ces cellules que ses deux macros de début et fin de cycle sont toujours exécutées une fois et seulement une fois chacune par cycle de calcul.
Lorsqu’un de ces boutons est cliqué, la macro exécutée ajoute 1 au compteur DÉBUT qui prend du coup une valeur supérieure à celle du compteur FIN. Lorsque le cycle de calcul arrive à la fin, l’autre macro ajoute 1 au compteur FIN qui devient maintenant égal au compteur DÉBUT.
Les formules des cellules qui génèrent ces messages vérifient la valeur de chacun des compteurs et n’affichent les messages que lorsque les deux compteurs sont de même valeur.
Le banc d’essai montre que maintenant les messages associés aux valeurs intermédiaires sont systématiquement bloqués et seulement ceux associés aux valeurs finales sont affichés, le cas échéant.