Titre du sujet : Re: Clignotement cellules selon conditions dans autres cellules par myDearFriend! le 13/03/2012 19:17:00
Bonsoir targa, bienvenue sur XLpages.com
Tout d'abord, comme je le précise dans l'article « La méthode OnTime », l'utilisation d'une telle procédure doit rester dans un domaine ludique !
Je déconseille vivement l'utilisation que tu en fais sur un classeur à usage visiblement professionnel. Au minimum, il conviendrait de limiter la durée du clignotement (à une dizaine de clignotements par exemple, ça me paraîtrait plus raisonnable)...
Cela dit, pour répondre à ta demande et pour le fun , tu trouveras ton classeur modifié en pièce jointe.
J'ai utilisé le code VBA suivant :
DANS LE MODULE DE CODE DE L'OBJET THISWORKBOOK
Option Explicit
'---------------------------------------------------------------------------------------
' Auteur : Didier FOURGEOT (myDearFriend!)
' www.mdf-xlpages.com
' Date : 13/03/2012
' Sujet : Cellules et Alertes clignotantes
'---------------------------------------------------------------------------------------
Private Sub Workbook_Open()
'Lance le clignotement à l'ouverture si condition remplie
Set PlageCible = getPlageCible
If Not PlageCible Is Nothing Then
Clign
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Interrompt le clignotement éventuel avant fermeture
StopClign
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
StopClign
If Target.Count > 1 Then Exit Sub
'Redéfinit la plage "clignotante"
Set PlageCible = getPlageCible
If Not PlageCible Is Nothing Then
Clign
End If
End Sub
DANS UN MODULE DE CODE STANDARD
Option Explicit
'---------------------------------------------------------------------------------------
' Auteur : Didier FOURGEOT (myDearFriend!)
' www.mdf-xlpages.com
' Date : 13/03/2012
' Sujet : Cellules et Alertes clignotantes
'---------------------------------------------------------------------------------------
Public PlageCible As Range
Dim Temps As Date
Public Sub Clign()
'Programmation de l'évènement toutes les secondes
Temps = Now + TimeValue("00:00:01")
Application.OnTime Temps, "Clign"
'Affiche l'alerte ou la fait disparaître (alternativement)
With PlageCible
.Font.ColorIndex = IIf(.Font.ColorIndex = 2, 3, 2)
End With
End Sub
Public Sub StopClign()
On Error Resume Next
'Stoppe la gestion de l'évènement OnTime
Application.OnTime Temps, "Clign", , False
'Cache l'alerte
PlageCible.Font.ColorIndex = 3
On Error GoTo 0
End Sub
Public Function getPlageCible() As Range
Dim R As Range, Plage As Range
Dim Adr As String
'Redéfinit la plage dite "clignotante"
With Sheets("Liste de materiel").Columns(6)
Set R = .Find("Article annulé", LookIn:=xlValues)
If Not R Is Nothing Then
Adr = R.Address
Set Plage = R
Do
Set Plage = Union(Plage, R)
Set R = .FindNext(R)
Loop While Not R Is Nothing And R.Address <> Adr
End If
End With
Set getPlageCible = Plage
End Function
En espérant avoir répondu à ta question (et si c'est le cas, voir au bas de ma signature STP)
Cordialement,
|