Comment faire clignoter une cellule excell
Résolu
rolandvan88
Messages postés
34
Statut
Membre
-
safach Messages postés 293 Statut Membre -
safach Messages postés 293 Statut Membre -
Bonjour,
comment faire clignoter une cellule sous Excel avec une condition par exemple si C11>6000, la cellule affiche "MAUVAISE DÉPENSE" comment faire clignoter cela pour attirer mon attention sur mes dépenses s'il vous plait j'ai besoin de votre aide
Merci
comment faire clignoter une cellule sous Excel avec une condition par exemple si C11>6000, la cellule affiche "MAUVAISE DÉPENSE" comment faire clignoter cela pour attirer mon attention sur mes dépenses s'il vous plait j'ai besoin de votre aide
Merci
20 réponses
-
voici un exemple de fichier que je dois créer pour l'entreprise
http://www.cjoint.com/confirm.php?cjoint=BInr5OZSi9w -
un exemple concret :
objet quantité coût
x1 1 2500
x2 2 300
x3 4 500
total 3300
donc je voudrais faire clignoter la cellule de 3300 étant donné que je me suis fixé un objectif de dépenser 2500 alors que cette cellule dépasse 2500 ( 3300>2500)
voila en quelque sorte ce que je voulais expliquer -
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
alors avec le VBA il faut être très précis, cela concerne quelle plage, uniquement C11 ou ?
Qui a t il en C11 des valeurs ou "MAUVAISE DÉPENSE" résultat d'une formule
et quel élément déclencheur faut il retenir les valeurs > à 6000 ou "MAUVAISE DÉPENSE"
-
pourrais je savoir comment faire ca car je dois introduire aussi mes conditions selon lesquelles si C11>6000 = mauvaise depense et faire clignoter la cellule
-
en c11 il y a le total de mes dépenses qui est de 5600 ( représenté par la formule =SOMME(C7:C10).
je ne sais pas si j'explique bien ? -
Re,
Voila comme cela, change les valeurs entre C7 et C10
par contre j'ai enregistré le fichier sous l'ancienne extension Excel 97_2003 .XLS sinon il faut l'enregistrer en XLSM à cause des codes
https://www.cjoint.com/?BIntlY7Noqh
-
OK merci bcp pour ce service que tu viens de me rendre mais pourrais je savoir comment tu l'as fait s.t.p décris moi les différentes étapes car si je devais le présenter je dois être en mesure au moins de le faire
Merci bcp -
car je ne maîtrise pas trop l'informatique donc je voudrais vraiment que tu puisse donner les instructions précises pour le faire depuis excel svp.
Merci -
Re,
Le problème est bien là, si tu ne connais pas trop l'informatique et surtout le langage VBA cela va être difficile.
il faut aller dans le visual basic editor du fichier, pour cela clic droit sur l'onglet d'une feuille/Visualiser le code.
Dans le projet VBAProject tu verras Thisworbook dans lequel j'ai écrit ces codes pour lancer les procédures dès l'ouverture du fichier, arrêter les procédures à la fermeture et le dernier pour lancer la procédure lors de changement de données
Option Explicit
Private Sub Workbook_Open()
'Lance le clignotement à l'ouverture si la cellule B11 ="Mauvais"
If Feuil1.Range("B11").Value = "Mauvais" Then Clign
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)
Dim F As Worksheet
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("C7:C10")) Is Nothing Then
'S'assure que la même valeur apparaisse en B3 sur chaque feuille
If Feuil1.Range("B11") = "Mauvais" Then Clign
If Feuil1.Range("B11") = "Bon" Then StopClign
'Lance ou stoppe le clignotement
End If
End Sub
Ensuite j'ai créé un module dans lequel j'ai écrit la procédure de clignotement et l'arrêt du clignotement
Option Explicit
Dim Temps As Variant
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 Feuil1
.[B11].Interior.ColorIndex = IIf([B11].Interior.ColorIndex = 3, xlNone, 3)
End With
End Sub
Public Sub StopClign()
On Error Resume Next
'Stoppe la gestion de l'évènement OnTime
Application.OnTime Temps, "Clign", , False
On Error GoTo 0
'Cache l'alerte
With Feuil1
.[B11].Interior.ColorIndex = xlNone
End With
End Sub
Mais si tu n'as pas de notion mieux vaut ne pas y toucher -
Re,
dans la Thiswokbook colle ce code
Private Sub Workbook_Open()
'Lance le clignotement à l'ouverture si la cellule B3 supérieure à 9
If Val(Sheets(1).Range("F2").Value) >= 5 Then Clign
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Interrompt le clignotement éventuel avant fermeture
StopClign
End Sub
et dans un module ce code
Option Explicit
Dim Temps As Variant
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 ThisWorkbook
With .Sheets("Feuil1").Range("F2")
.Interior.ColorIndex = IIf(.Interior.ColorIndex = 3, xlNone, 3)
End With
End With
End Sub
Public Sub StopClign()
On Error Resume Next
'Stoppe la gestion de l'évènement OnTime
Application.OnTime Temps, "Clign", , False
On Error GoTo 0
'Cache l'alerte
With ThisWorkbook
.Sheets("Feuil1").Range("F2").Interior.ColorIndex = xlNone
End With
End Sub
et dans les propriétés de ta feuille ce code
Private Sub Worksheet_Activate()
'Lance le clignotement à l'ouverture si la cellule B3 supérieure à 9
If [F2].Value = "" Then Exit Sub
If [F2].Value >= 0.05 Then Clign Else StopClign
End Sub
Private Sub Worksheet_Deactivate()
'Interrompt le clignotement éventuel avant fermeture
Call StopClign
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union([C2], [E2])) Is Nothing Then
StopClign
If [F2].Value = "" Then Exit Sub
If [F2].Value >= 0.05 Then Clign Else StopClign
End If
End Sub
le clignotement se lancera à l'ouverture du fichier, ou lorsque tu changeras les valeurs en C2 ou F2 ou lorsque tu reviendras sur ta feuille nommée Feuil1 -
Re,
comme tu relances la discussion, j'ai relu ton post et relève que le clignotement concerne plusieurs cellules de la colonne F ce qui remet en cause le code, je te conseille de supprimer les codes précédents et utiliser ces codes
dans la Thiswokbook colle ce codePrivate Sub Workbook_BeforeClose(Cancel As Boolean)
Call ArretClignotement
End Sub
Private Sub Workbook_Open()
Sheets("Feuil7").Select
Call ArretClignotement
Call CellulesClignotent
End Sub
dans les propriétés de ta feuille afin que le clignotement reprenne automatiquement quelque soit tes interventions sur ton classeur
Private Sub Worksheet_Activate()
Call CellulesClignotent
End Sub
Private Sub Worksheet_Deactivate()
Call ArretClignotement
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ArretClignotement
Call CellulesClignotent
End Sub
et dans un module colle ce codeDim Durée As Date
Public Sub CellulesClignotent()
Dim c As Range
For Each c In Range("F2:F100").Cells 'Zone du clignotement
If c.Interior.ColorIndex = xlNone Then
If c.Value <> "" And c.Value >= 0.05 Then
c.Interior.ColorIndex = 3
Else
c.Interior.ColorIndex = 0
End If
Else
c.Interior.ColorIndex = 0
End If
Next c
Durée = Now() + TimeValue("00:00:01") 'le temps du clignotement
Application.OnTime Durée, "CellulesClignotent"
End Sub
Sub ArretClignotement()
On Error Resume Next
Application.OnTime Durée, "CellulesClignotent", , False
Range("F2:F100").Interior.ColorIndex = xlNone
End Sub
un exemple de fichier enregistré en XLS que tu peux enregistrer sous avec une extension XLSM prenant en compte les macros, mais en aucun cas en XLSX
https://www.cjoint.com/c/EKzjhkFoIUj
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
Dans la Thiswokbook ajoute de code
Private Sub Workbook_Deactivate()
Call ArretClignotement
End Sub
Private Sub Workbook_Activate()
Call ArretClignotement
Call CellulesClignotent
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
et pour que le code s'adapte automatiquement à la plage de cellules à traiter colonne F, dans le module remplace le code par
Dim Durée As Date
Public Sub CellulesClignotent()
Dim c As Range
For Each c In Range(Range("F2"), Range("F65000").End(xlUp)).Cells 'Zone du clignotement
If c.Interior.ColorIndex = xlNone Then
If c.Value <> "" And c.Value >= 0.05 Then
c.Interior.ColorIndex = 3
Else
c.Interior.ColorIndex = 0
End If
Else
c.Interior.ColorIndex = 0
End If
Next c
Durée = Now() + TimeValue("00:00:01") 'le temps du clignotement
Application.OnTime Durée, "CellulesClignotent"
End Sub
Sub ArretClignotement()
On Error Resume Next
Application.OnTime Durée, "CellulesClignotent", , False
Range(Range("F2"), Range("F65000").End(xlUp)).Interior.ColorIndex = xlNone
End Sub
-
Re,
au certainement, je regarde cela dans la soirée
-
Re,
Bizarre que le code se mette en erreur, ajoute dans le module en début de code une gestion d'erreurOn Error Resume Next
exemple de l'emplacement ou tu dois ajouter la ligne dans le code
Public Sub CellulesClignotent()
Dim c As Range
On Error Resume Next
For Each c In Range(Range("F2"), Range("F65000").End(xlUp)).Cells 'Zone du clignotement
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
le sablier !
je ne sais pas si j'ai bien compris, n'es ce pas le pointeur de souris ou pourquoi pas le sablier qui s'affiche à chaque clignotement !
-
Re,
c'est bien ce que j'avais compris, cela vient du clignotement et il n'y a pas de manip pour l'éviter, par contre si tu actives une cellule, le clignotement s'arrête de le sablier ne s'affiche pas ce qui ne gêne pas pour travailler sur la feuille
-
Re,
Comme je te l'ai dit, ce problème ne peut se traiter qu'en VBA si tu as quelques notions et être très précis. Dans chaque post tu donnes des valeurs de déclenchement différentes >6000 puis > à 5600 puis > à 2500. cette valeur de déclenchement est elle variable et dans quelle cellule est elle affichée ?
Ensuite tu parlais de la cellule C11 puis de X1 etc même si ce x représente une colonne un code VBA est écrit pour une plage bien précise.
Le mieux serait d'avoir ton fichier que l'on apprécie sa structure que tu peux joindre avec ce lien
https://www.cjoint.com/