Cellule coloriée si reactivé

Résolu
eric2027 -  
 eric2027 -
Bonjour, je voudrais que ma cellule se colore en rouge par exemple lorsque je change 2 fois ce qui il y a dedans
par avance merci
Éric



99 réponses

eric2027
 
re

je l'ai installé, ça fonctionne à merveille, en ce qui concerne le mot de passe, je l'ai mis mais quand j'ouvre la macro, on peut toucher à toutes les données, est ce normal ?

est ce qu'il est possible d'avoir un rouge moins agressif, j'ai essayé de faire clignoter en b40 mais pas moyen, si tu pouvais me l'écrire,
je veux que ma cellule en b40 clignote quand le chiffre 11 apparait, j'ai fait une mfc que quand le 11 apparait, cette dernière se met en noir avec le chiffre blanc

par avance merci

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Pour la protection du module macro, tu as bien cette procédure

clic droit sur l'onglet de feuille et Visualiser le code ou touche Alt et touche de fonction F11
Outils/Propriétés du VBAProjet/onglet Protection, coche verrouiller le projet pour affichage et saisi un mot de passe que tu confirmes

Si tu as toujours accès au module, ferme Excel et réouvre le ainsi que le fichier normalement tu ne devrais plus avoir accès au module sans le mot de passe.

Pour la couleur, quelle version as tu d'Excel !

Essaye de changer dans ces lignes de code le 3 en fin de ligne par 38 ou 45

If Target.Offset(0, 9) >= 2 Then Target.Interior.ColorIndex = 3

Pour le clignotement de la cellule B40 tu peux le faire qu'avec une macro, la mise en forme conditionnelle ne sera pas prise en charge et devra être supprimé.
Je te fais un code, mais sur mes deux propositions, laquelle as tu retenue pour continuer sur ce code
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eric2027
 
slt Mike

ma version excel est 2002

pour le mot de passe, c ok et c cool

merci
0
eric2027
 
re

j'ai pris le deuxième, je la comprends mieux, comment je fais pour mettre les chiffres du compteur en blanc et non en noir ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Je pense que tu aurais intérêt à masquer les colonnes compteur plutôt que de mettre en blanc les caractères enfin tu choisis
Pour masquer les colonnes dans mon exemple K, L, M et N clic sur les en tête de colonne/Format/Colonne/Masqer
pour mettre les caracrères en blanc surbriller les plages Format/Cellule/Police et sélectionner la couleur blanche (tu peux également passer par l'outils couleur police)

si en B40 tu veux faire clignoter la cellule il faudra limiter le code aux cellules B39, dans les propriètés feuille, colle ce code

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect([B2:B39], Target) Is Nothing Then
Target.Offset(0, 9) = Target.Offset(0, 9) + 1
If Target.Offset(0, 9) >= 2 Then Target.Interior.ColorIndex = 3
If Target = "" Then
Target.Offset(0, 9) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([D2:D39], Target) Is Nothing Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
If Target.Offset(0, 8) >= 2 Then Target.Interior.ColorIndex = 3
If Target = "" Then
Target.Offset(0, 8) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([F2:F39], Target) Is Nothing Then
Target.Offset(0, 7) = Target.Offset(0, 7) + 1
If Target.Offset(0, 7) >= 2 Then Target.Interior.ColorIndex = 3
If Target = "" Then
Target.Offset(0, 7) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([H2:H39], Target) Is Nothing Then
Target.Offset(0, 6) = Target.Offset(0, 6) + 1
If Target.Offset(0, 6) >= 2 Then Target.Interior.ColorIndex = 3
If Target = "" Then
Target.Offset(0, 6) = ""
Target.Interior.ColorIndex = xlNone
End If
End If

StopClign
Clign

End Sub

Pour faire clignoter la cellule B40 ouvre un module et colle ce code

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"
If [B40] >= 11 Then
With ThisWorkbook
'Texte clignotant
With .Sheets("Feuil2").[B40]
[B40].Font.ColorIndex = IIf(.Font.ColorIndex = 2, 1, 2)
End With
'Fond clignotant
With .Sheets("Feuil2").[B40]
.Interior.ColorIndex = IIf(.Interior.ColorIndex = 1, 2, 1)
End With
End With
End If
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
'Fond
.Sheets("Feuil2").[B40].Interior.ColorIndex = xlNone
'Texte
.Sheets("Feuil2").[B40].Font.ColorIndex = 0
End With
End Sub

pour que le code soit pris en considération dès l'ouverture du fichier dans la Thisworkbook colle ce code

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopClign
End Sub

Private Sub Workbook_Open()
StopClign
Clign
End Sub

Tu supprime tes mises en forme conditionnelle ou tu le modifies pour simplement mettre le caractère en gras si la valeur est égale ou supérieure à 11

https://www.cjoint.com/?0khlAGRgURm

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eric2027
 
re

tout marche nickel, mais et c'est là que je me heurte aux macros, sur les onglets de mes feuilles, il y a des noms, la 1ere, pas de problème, j'ai été dans la macro et j'ai changé feuil1 par le nom correspondant mais sur les autres, ça prend pas, peux tu m'expliquer pourquoi

merci

É2007
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Donne moi le nom de tes feuilles ou le nom de la feuille concernée par la macro.

Si plusieurs feuilles concernées précise le moi
0
eric2027
 
re
j'ai 22 feuilles avec des noms différents, est ce que tu veux les noms qui sont sur les feuilles ?
Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Sur tes 22 feuilles, combien sont concernées par les macros, par contre donne moi les noms de celles qui ne sont pas concernées
0
eric2027
 
re

toutes sont concernées, de plus, y a t il une solution pour bloquer les cellules des 4 colonnes ainsi que les colonnes I, J ?

j'ai mis 38 pour que les couleurs soient moins hard, c'est nickel, ça me donne du magenta 50%

merci

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Pour être utilise dans toutes les feuilles de ton classeur, colle le code dans la Thiswokbook (clic droit sur un onglet de feuille, double clic ou clic et Entrée sur Thiswokbook que tu verra dans la marge de gauche.
Supprime toutes tes Mises en forme conditionnelle de tes page concernant la cellule B40.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopClign
End Sub

Private Sub Workbook_Open()
StopClign
Clign
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Not Intersect([B2:B39], Target) Is Nothing Then
Target.Offset(0, 9) = Target.Offset(0, 9) + 1
If Target.Offset(0, 9) >= 2 Then Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 9) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([D2:D39], Target) Is Nothing Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
If Target.Offset(0, 8) >= 2 Then Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 8) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([F2:F39], Target) Is Nothing Then
Target.Offset(0, 7) = Target.Offset(0, 7) + 1
If Target.Offset(0, 7) >= 2 Then Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 7) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
If Not Intersect([H2:H39], Target) Is Nothing Then
Target.Offset(0, 6) = Target.Offset(0, 6) + 1
If Target.Offset(0, 6) >= 2 Then Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 6) = ""
Target.Interior.ColorIndex = xlNone
End If
End If

Call StopClign
Call Clign

End Sub

Pour le code clignotant crée un module dans le visual (Insertion/Module et colle ce code qui en plus de faire clignoter la cellule mettra en grac et augmentera la police de B40 lorsque la valeur sera égale et supérieure à 11

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"
If [B40] >= 11 Then
With ThisWorkbook
'Texte clignotant
With .ActiveSheet.[B40]
[B40].Font.ColorIndex = IIf(.Font.ColorIndex = 2, 1, 2)
[B40].Font.FontStyle = "Gras"
[B40].Font.Size = 12
End With
'Fond clignotant
With .ActiveSheet.[B40]
.Interior.ColorIndex = IIf(.Interior.ColorIndex = 1, 2, 1)
End With
End With
End If
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
'Fond
.ActiveSheet.[B40].Interior.ColorIndex = xlNone
'Texte
.ActiveSheet.[B40].Font.ColorIndex = 0
[B40].Font.FontStyle = "Normal"
[B40].Font.Size = 10
End With
End Sub

Pour la protection des cellules, par défaut toutes les cellules son verrouillées dès lors que la feuille est protégée. Il suffit donc de déverrouiller les cellules que l'on souhaite laissées accessibles et protéger la feuille.
Mettre en surbrillance toutes ces cellules ex. B2 à B38 Format/Cellule/onglet Protection/décoche la case verrouillée
Puis Outils/Protection/Protéger la feuille (il est également possible de mettre un mot de passe pour la déprotéger, mais attention de ne pas l'oublier.
Par contre si tu veux rendre accessible momentanément tes cellules pour permettre tes saisies, tu peux laisser toutes tes cellules verrouillées, mets en surbrillance les cellules que tu souhaites laisser accessible sous protection d'un mot de passe et Outils protection/Permettre aux utilisateurs de modifier des plages/Nouvelle (tu peux la nommer ou tu laisse plage1 etc...)
Clic sur protéger la feuille (éventuellement avec mot de passe).
Lorsque tu voudras saisir pour la première fois des notes dans la plage, le mot de passe te sera demandé. Pour reverrouiller la plage il faudra fermer le fichier ou ajouter un bout de code

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eric2027
 
re

ce n'est pas tout a fait ça, quand la cellule devient en couleur, je voudrais si c'est possible que la cellule se bloque entièrement de façon à ne plus pouvoir y revenir

j'ai un problème, quand je veux ré ouvrir ma macro, cela me dit "le projet ne être affiché", ensuite je fais ok et nouveau message "erreur système &h80004005(-214747259)erreur non spécifié, c'est un truc de ouf, hier c'était nickel

merci

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Pour l'erreur que tu rencontres, Tu n'as pas modifié la structure de ton fichier ou protégé ta feuille !

Pour ton histoire de cellule verrouillées, au départ donne moi l'étendue de ton tableau de la cellule a1 à x20 par exemple
donne moi la liste soit des cellules que tu souhaites accessible ou inaccessible
dans ton cas il est souhaitable d'avoir un mot de passe pour rendre la protection efficace donne moi celui que tu souhaites mettre pour la protection de ta feuille et je t'écris un code
0
eric2027
 
re
"modifié la structure de ton fichier ou protégé ta feuille "! c'est du chinois pour moi

les cellules sont en b9:b39 ; c9:c39 ; d9:d39 ; e39f39 ; g9:g39 ; h9:h39

mon mot de passe est leg509
merci

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bon c'est pas grave, je vais me débrouiller avec ça et te préparer un exemple avec les cellules qui se verrouilleront automatiquement après la modification.
Par contre la cellule B40 clignotante n'est pas possible sur une feuille protégée puisque on fait varier les couleurs qui sont inaccessible sous protection.
Ce qui est par contre possible, c'est mettre sur la feuille une forme géométrique qui clignote contenant éventuellement un message ex B40est supérieur ou égale à 11.

Ou lorsque la cellule B40 clignote on suspend la protection de la feuille ce qui rend les cellules de couleur accessible
0
eric2027
 
re

c cool,

" Ce qui est par contre possible, c'est mettre sur la feuille une forme géométrique qui clignote contenant éventuellement un message ex B40est supérieur ou égale à 11. "

si tu peux me faire ça, ce serai génial

merci pour tout

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
En fait, ça y est, je peux te faire ce que tu veux soit la cellule clignotante ou une forme géométrique (une Shape) au choix !
0
eric2027
 
re

franchement, les 2 mon capitaine, je suis super content,

merci à toi, et à ta patience

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Au départ les cellules compteur en jaune des colonnes K, L, M et N sont déverrouillées et les colonnes devront être masquées.
Les cellules soumises au blocage sont B9 à B39, D9 à D39, F9 à F39 et H9 à H39, sont déverrouillées et la feuille est protégée en écriture avec le mot de passe que tu m'as donné leg509.
Dans ta demande initiale tu souhaitais également bloquer les cellules des colonnes I et J par contre sur ton dernier post tu parles des colonnes C et E.
La shape clignotant peut être déplacée pendant le clignotement avec le clic gauche.
il est également souhaitable de protéger le module macro avec le même mot de passe pour protéger le code et par la même les données de la feuille.
le code dans la Thiswokbook est

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopClign
End Sub

Private Sub Workbook_Open()
StopClign
Clign
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Not Intersect([B9:B39], Target) Is Nothing Then
Target.Offset(0, 9) = Target.Offset(0, 9) + 1
If Target.Offset(0, 9) >= 2 Then
Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 9) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
End If
If Not Intersect([D9:D39], Target) Is Nothing Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
If Target.Offset(0, 8) >= 2 Then
Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 8) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
End If
If Not Intersect([F9:F39], Target) Is Nothing Then
Target.Offset(0, 7) = Target.Offset(0, 7) + 1
If Target.Offset(0, 7) >= 2 Then
Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 7) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
End If
If Not Intersect([H9:H39], Target) Is Nothing Then
Target.Offset(0, 6) = Target.Offset(0, 6) + 1
If Target.Offset(0, 6) >= 2 Then
Target.Interior.ColorIndex = 38
If Target = "" Then
Target.Offset(0, 6) = ""
Target.Interior.ColorIndex = xlNone
End If
End If
End If
Protection_Cellule_Couleur
Call StopClign
Call Clign
End Sub

Dans un module

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"
If [B40] >= 11 Then
With ThisWorkbook
'Texte clignotant
With .Sheets("Feuil2")
.Shapes("Forme8").Visible = Not .Shapes("Forme8").Visible
End With
With .ActiveSheet.[B40]
[B40].Font.ColorIndex = IIf(.Font.ColorIndex = 2, 1, 2)
[B40].Font.FontStyle = "Gras"
[B40].Font.Size = 12
End With
'Fond clignotant
With .ActiveSheet.[B40]
.Interior.ColorIndex = IIf(.Interior.ColorIndex = 1, 2, 1)
End With
End With
End If
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
'Fond
.ActiveSheet.[B40].Interior.ColorIndex = xlNone
'Texte
.ActiveSheet.[B40].Font.ColorIndex = 0
[B40].Font.FontStyle = "Normal"
[B40].Font.Size = 10
End With
ActiveSheet.Shapes("Forme8").Visible = False
End Sub

Sub Protection_Cellule_Couleur()
Dim cel As Range
ActiveSheet.Unprotect Password:="leg509"
For Each cel In [B9:B39,D9:D39,F9:F39,H9:H39]
If cel.Interior.ColorIndex = 38 Then
cel.Locked = True
End If
Next
ActiveSheet.Protect Password:="leg509", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End Sub

https://www.cjoint.com/?0kjoI4tlLXj
0
eric2027
 
re

effectivement, pour moi c'est plus simple de pouvoir gérer les colonne B; C; D; E; F; G; H; I; J, dans la même macro, est ce que tu pourrais mettre dans l'alerte un "attention" en rouge qui flash en lettre.

ce que tu fais est un truc de OUF

merci

Éric
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Les cellules dans les colonnes B; C; D; E; F; G; H; I; J, sont elles soumise au même critère (se verrouiller lorsque leurs valeurs changent deux fois ou ont elles un statut différent)

Que veux tu dire par
dans la même macro, est ce que tu pourrais mettre dans l'alerte un "attention" en rouge qui flash en lettre

dans la forme qui clignote changer le texte ou ajouter Attention en rouge !
0