Rapport de message :*
 

Re: Clignotement cellules selon conditions dans autres cellules

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,