verrouiller selon la couleur de fond

  • Initiateur de la discussion Surfing Joe
  • Date de début
S

Surfing Joe

Guest
Bonsoir,

Je ne peux plus me passer de ce forum!

Savez_vous comment verrouiller ou d¨¦verouiller automatiquement des cellules en fonction de la couleur de fond.

Dans le fichier joint je voudrai que seules les cellules fond jaune restent d¨¦verrouill¨¦es.

Merci

A+
 

Pièces jointes

  • Vercellcouleurs.zip
    21.5 KB · Affichages: 27
J

jmps

Guest
Bonjour Surfing Joe, bonjour Forum,

Est-ce que ta question veut dire que tu veux que ce soit dynamique quand tu changes la couleur de la cellule ou bien tu veux juste le faire une fois. Auquel cas, je ne vois pas l'intérêt de faire une macro, il suffit de le faire à la main.

A+

José
 
J

jmps

Guest
Re Surfing Joe,

Voici un code qui permet de faire ce que tu demandes.

Sub VerrouillageCouleur()
  ActiveSheet.Unprotect
    For Each c In Range("A1:R26")
      If c.Interior.ColorIndex = 36 Then
        c.Locked = False
      Else
        c.Locked = True
      End If
    Next c
  ActiveSheet.Protect
End Sub


Je regarde pour l'adapter en dynamique mais c'est pas gagné car le changement de couleur ne déclenche pas un évènement Worksheet_Change.

A+

José
 
J

jmps

Guest
Re re,

D'abord une simplification de mon code précédent :

Sub VerrouillageCouleur()
  ActiveSheet.Unprotect
  For Each c In Range("A1:R26")
    c.Locked = Not (c.Interior.ColorIndex = 36)
  Next c
  ActiveSheet.Protect
End Sub


C'est une astuce que j'avais vue sur un poste de Ti il n'y a pas très longtemps. Merci à lui.

Pour ce qui est de l'utilisation en dynamique, il n'y a effectivement pas d'évènement déclenché par le fait de changer une couleur de cellule, ce qui est fort dommage mon cher Billou (Lol !). Il faudrait donc déclencher cette macro sur des évènements comme :
Worksheet_Change
Worksheet_SelectionChange
Worksheet_Calculate


La seule contrainte, c'est qu'on est obligé de parcourir toute la plage à chaque fois car on ne sait pas quelle(s) cellule(s) a ou ont changé de couleur. Dans ton exemple ce n'est pas gênant mais si tu as des grandes plages à parcourir, ça peut devenir embêtant en termes de temps de réponse. Si tu veux quand même l'utiliser tu places le code ci-dessus dans un module standard. Puis tu appelles VerrouillageCouleur dans un (ou plusieurs si tu veux) des Sub Worksheet_xxxxxx que je citais.

Voilà. Maintenant peut-être que quelqu'un d'autre a une solution plus élégante.

Bon dimanche.

José
 
B

Benoit

Guest
Bonjour,

Je viens me greffer sur le post de Surfing Joe pour poser la question suivante qui est dans le même style ;

Est-il possible de vérouiller certaines cellules, en fonction de la couleur d' un autre cellule ? Par exemple, peut-on verouiller A1 B1 C1 D1 E1, si la couleur de la cellule G1 est rouge par exemple.

Merci.
 
J

jmps

Guest
Bonjour Benoit,

Bien sûr, c'est le même principe. Mais le problème reste le même... Dynamique ou pas ?

Sub VerrouillageCouleur()
  If Range("G1").Interior.ColorIndex = 3 Then Range("A1:E1").Locked = True
End Sub


Bon dimanche à toi aussi.

José
 
S

Surfing Joe

Guest
Bonjour! merci ¨¤ tous, je vais essayer vos pr¨¦cieux conseils, et vous teindrai au courrant.

L'int¨¦r¨ºt est que lorsqu'on travaille ¨¤ plusieurs sur une feuille comportant beaucoup de lignes et de colonnes, on peut construire en d¨¦terminant imm¨¦diatement par le fond color¨¦, quelles cellules peuvent ¨ºtre modifiables ou pas, et ainsi chacun se rep¨¨re rapidement ce qui ¨¦vite aussi des erreurs de saisie.

A+ S.J.
 
S

Surfing Joe

Guest
Bonjour Jmps,

Ta marco fonctionne bien et r¨¦pond ¨¤ mon attente, c'est un peu long mais bien pratique pour moi, de plus c'est une excellente base pour ¨¦voluer. Je vais travailler avec...

Merci 65536x256 fois.
 

Discussions similaires

Réponses
2
Affichages
210

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2