Cellule clignotante selon une valeur

Résolu/Fermé
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 - 11 juil. 2015 à 16:47
Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 - 12 juil. 2015 à 05:33
Bonjour à la communauté des experts VBA,

Je souhaiterais trouver la solution pour faire clignoter les cellule d'une plage selon la valeur.J'ai presque finaliser la solution sauf que je n'arrive pas à trouver comment alterner mes deux fonctions. Je m'explique:

j'ai crées deux fonctions qui sont:
-fonction cligno: permet de mettre le fond de mes cellule en vert si valeur > 12 (jusqu'ici tout va bien)
-fonction arretcligno: permet d'enlever le fond vert (jusqu'ici tout va bien)
ensuite, j'ai utiliser ces deux fonctions dans une module avec la méthode Call (voir code ci-dessous)

Sub declencher()
Call Arretcligno
vNow = Now() + TimeValue("00:00:01")
Call cligno
End Sub

Saut que l'alternance entre les deux fonctions ne se fait pas. Merci pour votre aide.
Je vous joins le fichier en question via le lien:
https://www.cjoint.com/c/EGloSsdnzAG

Merci d'avance pour votre gentillesse et professionnalisme!


1 réponse

Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 332
Modifié par Frenchie83 le 11/07/2015 à 19:29
Bonsoir
Si j'ai bien compris,
Private Sub Worksheet_change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B2:J7")) Is Nothing Then
        T = 0
        'Clignotement
        Do While T < 2
            If Target.Interior.Color = RGB(0, 255, 0) Then
                Target.Interior.Color = xlNone
                Target.Font.ColorIndex = 3
                Application.Wait Now + TimeValue("00:00:01")
                T = T + 1
            Else
                Target.Interior.Color = RGB(0, 255, 0)
                Target.Font.ColorIndex= 1
                Application.Wait Now + TimeValue("00:00:01")
            End If
        Loop
            
        'Fixer les couleurs
        If Target < 12 Then
            Target.Interior.Color = xlNone
            Target.Font.ColorIndex = 3
        Else
            Target.Interior.Color = RGB(0, 255, 0)
            Target.Font.ColorIndex= 1
        End If
    End If
End Sub

A coller dans le module de la feuille 1
Cdlt
0
commentaireOnsoir Frenchie83, merci pour votre proposition. Mais je souhaiterais partir à partir de mon code. En effet je souhaiterais appliquer ma.méthode.
Est ce que c'est possible de l'appliquer a mon code ?
Merci pour votre aide!!
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
11 juil. 2015 à 23:05
Frenchie83,
J'ai testé votre code en le collant dans la feuille 1 de mon classeur. En lançant la macro, Excel me demande de donner un nom à la macro.
Est ce qu'il faut commencer le code avec le code avec Sub ?
0
Frenchie83 Messages postés 2237 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 20 juin 2022 332
12 juil. 2015 à 05:33
Bonjour
En lançant la macro, Excel me demande de donner un nom à la macro. Dans la proposition que je vous avez faite, on ne lance pas la macro, Si vous l'avez bien placé dans le module de la feuille 1, celle-ci démarre seule dès que vous changez le contenu d'une cellule du tableau. Il n'y a aucune autre action à faire de votre côté.
je souhaiterais partir à partir de mon code. En effet je souhaiterais appliquer ma.méthode. . Si je n'ai pas suivi votre méthode, c'est que je n'est pas compris ce que vous vouliez faire réellement, vous parlez de cellules clignotantes, mais à aucun moment on ne décèle l'action de clignoter, vous ne faites que changer la couleur en vert si >12 sinon pas de couleur, et tout ça en balayant le tableau complet. Si cela doit clignoter pour chaque cellules, cela risquera de vous paraître un peu long, alors que dans le cas que je vous propose, seule la cellule modifiée sera testée et se mettra à clignoter et, en fonction de sa valeur, passera au vert ou pas.
Si vraiment ma proposition ne vous convient pas, reformulez votre demande avec plus de précisions, s'il vous plaît.
Cdlt
0