XL 2010 cellule clignotante : code à insérer dans un VAR

andrekn13

XLDnaute Occasionnel
Sur plusieurs forums, vu des codes pour créer une cellule clignotante quand une date est dépassée.
mon problème est qu'à travers un tableau VAR , sur feuil 1 , qui récapitule des données de toutes les feuilles, il faut que j'arrive à rajouter ou plutôt, à imbriquer une condition supplémentaire si cette facture a dépassé une date marquée en cellule L21, malgré que la macro continue à travailler . La plupart utilisent sur thisworbook la procédure : Private Declare Function GetTickCount Lib "Kernel32" () As Long ou bien :
Sub clignote(Cel As Range) ; ce qui est incompatible , il me semble avec ma macro.
Je rajoute que ma difficulté est de traduire en language vba :
" au moment où tu boucle sur cette feuille X, si la date en L21, dépasse la date, fait clignoter dans le tableau récapitulatif, à la ligne correspondant, à la y colonne , cette cellule"
Accepte toute proposition car , depuis des années j'améliore ma mouture, et au passage remercie tous ceux qui y ont participés !
Ci-joint mon fichier simplifié au max avec un code "clignote" simple, et s'arrête automatiquement , qui marche sur une cellule active
merci de vos solutions
 

Pièces jointes

  • BASE FACT pour web.xlsm
    4.3 MB · Affichages: 82

Dranreb

XLDnaute Barbatruc
Bonjour
Essayez comme ça :
VB:
Option Explicit
Private Cellules As Range, Temps As Date, Bascule As Boolean

Sub FaireClignoter(ByVal Cel As Range)
If Temps = 0 Then
  Set Cellules = Cel
  Clignoter
Else
  Set Cellules = Union(Cellules, Cel)
  End If
End Sub

Sub Clignoter()
Bascule = Not Bascule
Cellules.Interior.ColorIndex = IIf(Bascule, 3, 2)
Temps = Now + TimeSerial(0, 0, 1)
Application.OnTime Temps, "Clignoter"
End Sub

Sub ArrêtClignotements()
If Temps = 0 Then Exit Sub
Application.OnTime Temps, "Clignoter", Schedule:=False
Temps = 0
Cellules.Interior.ColorIndex = 2
Set Cellules = Nothing
Bascule = False
End Sub
 

andrekn13

XLDnaute Occasionnel
Bonjour Dranreb; ou je suis nul à ce point ou je ne comprends pas la subtilité de de code .... car en le relisant maintes fois , je ne saisis pas :
Cellules.Interior.ColorIndex = IIf(Bascule, 3, 2) et surtout :
comment intégrer cette macro dans mon VAR , je ne vois pas de code du style :
" au moment où tu boucle sur cette feuille X, si la date en L21, dépasse la date, fait clignoter dans le tableau récapitulatif, à la ligne correspondant, à la y colonne , cette cellule"
Merci d'éclairer ma lanterne
 

Dranreb

XLDnaute Barbatruc
Oui, c'est parce que je ne sais pas où c'est ce truc là. Y a beaucoup de choses dans votre classeur vous savez !
En tout cas quand vous êtes dessus faites simplement FaireClignoter CetteCelluleLàAussi
Le code que je vous ai indiqué est à mettre dans un module à part.
Le clignotement ne commencera qu'après la fin de l'exécution de la procédure où vous aurez ainsi indiqué toutes les cellules qui doivent clignoter.
Vous pouvez aussi mettre à la fin un Application.OnTime Now + TimeSerial(0, 15, 0), "ArrêtClignotements"
IIf(Bascule, 3, 2) = 3 si Bascule est True, 2 si non.
 
Dernière édition:

andrekn13

XLDnaute Occasionnel
RE ;);)
J'ai épurer au max : juste ton code et celui concerné : les 2 ovales à cliquer dessus
j'ai rajouter sur : Sub SYNTHESE_clignote() à l'endroit qu'il me semble juste, le commentaire
car
même avec votre dernière réponse , je ne vois pas comment lui dire
"FaireClignoter CetteCelluleLàAussi " .... :(:(
merci par avance Dranreb
 

Pièces jointes

  • BASE FACT2 pour web.xlsm
    4.3 MB · Affichages: 89

Dranreb

XLDnaute Barbatruc
Il s'agit bien évidemment d'indiquer à FaireClignoter non pas CetteCelluleLà
(Ne me faites pas le coup du «Dites moi quelque chose
— Quelque chose») mais une expression Range représentant la cellule qui doit clignoter
Par exemple: FaireClignoter Activesheet.Cells(L, "X")
 

andrekn13

XLDnaute Occasionnel
Décidément, me noie dans un verre d'eau ?? mais ça commence à donner résultat !
Rajouté juste FaireClignoter Cells(derligne, 2) à la fin :

If Sheets(I).Range("A22") = "OBJET :" And Sheets(I).Range("H19") = "Suite devis N° :" And Sheets(I).Range("L21").Value <= Date Then
Sheets("Année En Cours").Cells(derligne, j).Value = Sheets(I).Range(varFROIDnouveau(j - 1)).Value
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 1), Address:="", _
SubAddress:="'" & Worksheets(I).Name & "'!K1", _
TextToDisplay:=Worksheets(I).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 2), Address:="", _
SubAddress:="'" & Worksheets(I).Name & "'!I17", _
TextToDisplay:=Worksheets(I).Name

'ICI CODE A INSERER A LA SUITE SI LA CONDITION ,OU AU MOMENT DE CETTE BOUCLE VERIFIE SI ON INSERE CETTE FEUILLE , AJOUTE LE
' CLIGNOTEMENT SUR LA FEUILLE DE SYNTHESE A LA LIGNE CORRESPONDANT COLONNE J
'IL N'Y A QUE L'ONGLET 622 POUR TEST A L21

FaireClignoter Cells(derligne, 2)

End If

mais c'est toute la colonne qui clignote , pourtant, à ce niveau du code , ne boucle, que sur une ligne ! pourquoi cette variable changerais à ce moment ? je suis trop novice pour cette subtilité ....
 

Pièces jointes

  • BASE FACT2 pour web.xlsm
    4.3 MB · Affichages: 78

Dranreb

XLDnaute Barbatruc
Un conseil: n'utilisez jamais Range ou Cells sans préciser devant puis une expression Worksheet suivie d'un point.
Mais ce n'est pas ça qui explique que toutes les lignes clignotent: c'est que vous invoquer FaireClignoter à chaque ligne, pour toutes les feuilles Sheets(I) tout simplement.
Ça ne devait pas être soumis à une condition ?
 

andrekn13

XLDnaute Occasionnel
oui en effet , j'avais voulu faire en 2 étapes mon code pour éviter de le rendre plus compliqué à cette étape;
modifié et ça marche !!!
Cependant encore 2 buggs
1) ne clignote que sur le 1ere feuille trouvée, dans mon test feuil622, alors que maintenant ajouté la 617
2)quand je clique 1 deuxième fois, j'ai un message d'erreur sur
Cellules.Interior.ColorIndex = IIf(Bascule, 3, 2)

voici mon changement :
if ......
If Sheets(I).Range("L21").Value <= Date Then
FaireClignoter Cells(derligne, 10)
End If
end if .....
3) et cerise sur le gâteau, pas réussi à insérer votre code pour arrêt auto au bout de x secondes
fichier à jour du test joint
 

Pièces jointes

  • BASE FACT3 pour web.xlsm
    4.3 MB · Affichages: 72

Dranreb

XLDnaute Barbatruc
Je vous interdis de mettre en commentaire le Else dans FaireClignoter.
Si vous ne voulez qu'une seule cellule clignotante mettez un Exit Sub tout de suite derrière, c'est tout.
En exécutant ça, à la fin, ça ne clignote que pendant 10 secondes :
VB:
Application.OnTime Now + TimeSerial(0, 0, 10), "ArrêtClignotements"
 
Dernière édition:

andrekn13

XLDnaute Occasionnel
re
quand bien même précisé devant Cell, le chemin, et vérifié que mes conditions marchent et retourne bien les 2 résultats ' la feuille 622 et 617, ce n'est que sur le 1er résultat que la cellule clignote et non sur les 2 .....
décidément je tourne en rond .....
 

Pièces jointes

  • BASE FACT4 pour web.xlsm
    4.3 MB · Affichages: 65

andrekn13

XLDnaute Occasionnel
pas compris la subtilité .... en quoi mettre un commentaire sur 3 lignes avec ' à chaque ligne puisse changé quelque chose ?
je l'ai ais mis quand le code suivant ne fonctionne pas comme je m'y attendais !
par curiosité j'ai enlevé ce commentaire et cela n'a rien changé !!
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib