Bonjour,
Un procédé simple, sinon même simpliste :
Sub Clignote()
With Worksheets("Feuil1")
.Calculate
If .Range("Z1") = 1 Then Application.OnTime Now + TimeValue("00:00:01"), _
"Clignote"
End With
End Sub
Sub Clign()
Worksheets("Feuil1").Range("Z1") = 1
Clignote
End Sub
Sub StopClign()
Worksheets("Feuil1").Range("Z1").ClearContents
End Sub
Le clignotement devient vite pénible, et ne permet guère de travailler sereinement... Il est donc préférable de le lancer manuellement et de pouvoir l'arrêter : la proc. Clign permet de le lancer, elle est attachée au bouton rouge, la proc. StopClign permet de l'arrêter, elle est attachée au bouton vert.
Lancement ou arrêt consiste simplement à mettre une valeur en Z1 ou l'effacer. Et le lancement s'accompagne du lancement de la procédure Clignote qui va assurer la continuité du clignotement.
Cette procédure opère par un recalcul de la feuille et se relance elle-même toutes les secondes. Elle se relance tant que Z1 contient la valeur 1, ce qui permet d'arrêter le clignotement lorsque Z1 est effacée.
Le clignotement proprement dit est produit par MFC : 2 MFC qui alternent selon que le nombre de secondes de l'heure est pair ou impair. La condition de valeur est prise en compte pour n'affecter que les cellules concernées, la condition relative à Z1 également pour que la mise en forme n'affecte pas les cellules si on ne clignote pas...
=ET(B2<0,5;MOD(SECONDE(MAINTENANT());2)=0;$Z$1=1)
=ET(B2<0,5;MOD(SECONDE(MAINTENANT());2)=1;$Z$1=1)
Ce système est facilement adaptable...
Il convient le cas échéant de stopper le clignotement à la fermeture du classeur : pour ce faire programmer la proc. BeforeClose du classeur pour qu'elle exécute StopClign...
Cordialement.