Déverrouiller les cellules selon la couleur

Ilino

XLDnaute Barbatruc
Forum Bonne année
est ce que il y a une possibilité de mettre un code( bouton ) pour déverrouillé les cellules blanches seulement dans une feuille coloriée en bleu clair?
toutes les cellules de la feuille sont Verrouillées
GRAZIE
 

Isab

XLDnaute Occasionnel
Re : Déverrouiller les cellules selon la couleur

Bonjour


peut-être comme ceci ( au dos de la feuille):

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim CM As Long
Dim c As Range

'deprotege et verrou sur toute la feuille
ActiveSheet.Unprotect
ActiveSheet.Cells.Locked = True

'target count = CM ( c'est à dire:  soit 1, soit > 1 si fusion)
For Each c In Target
CM = IIf(c.MergeCells, CM + 1, 1)
Next c

If Target.Count = CM Then
  If Target.Interior.ColorIndex = xlNone _
  Or Target.Interior.ColorIndex = 2 Then
  Target.Locked = False
  End If
End If

ActiveSheet.Protect AllowFormattingCells:=True
End Sub

PS . la protection repose sur la couleur il est preferable de supprimer ce petit bout ( AllowFormattingCells:=True)
Bonne soirée
Isab
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Bonjour à tous

Isab
:
J'ai testé ton code. Ici les cellules restent sur Locked=True
(et sur une une feuille vierge, il empêche toute coloration de cellule)
Néanmoins j'ai bien aimé ton petit CM ;)

EDITION: Si on ne protège pas la feuille, alors là les cellules sont bien déverrouillées.

Ilino:
Il n'y a pas de fichier dans le poste 11.
Et je te le répète (comme beaucoup d'autres sur le forum), la fusion de cellules est à bannir autant que possible car source d'ennui surtout en VBA. ;)
 
Dernière édition:

Isab

XLDnaute Occasionnel
Re : Déverrouiller les cellules selon la couleur

Bonjour JM et bonne année :)

CM pour MergeCells / CellsMerge :)

Merci pour le CM :)
sinon j'ai modifié le code .. il est possible de mettre de la couleur sur les cellules..
mais dans ce cas la macro n'a pas lieu d'être :)

PS . la protection repose sur la couleur il est preferable de supprimer ce petit bout (AllowFormattingCells:=True)

le reste chez moi ça fonctionne :)

ISAB
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Re

Isab
Quelle est ta version d'Excel?
car avec Excel 2003 (version avec laquelle j'ai fait les tests), j'obtiens ceci.
(si je laisse le code de déprotection/protection actif)
isab.png
PS: test fait avec ton code sans modif aucune.

EDITION: Zut, je viens de voir que tu vais édité ton code, quel idiot je fais !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Re


Avec ta dernière modif
Plus d'onglet Protection (donc je ne peux vérifier visuellement si la cellule est verrouillée ou déverrouillée)
gag.png
et on ne peut plus fusionner les cellules (ce qui pour moi n'est pas un mal mais pour Ilino c'est point pareil ;) )

PS: je te rejoins sur ce point
mais dans ce cas la macro n'a pas lieu d'être :)
 

Isab

XLDnaute Occasionnel
Re : Déverrouiller les cellules selon la couleur

Re :)

Si protection et si la cellule n'est pas modifiale c'est qu'elle est verrouillée :)

sinon:
cliquer sur cellule ..
enlever protection par menu revision et appeler le menu format /.. depuis le ruban

ou alors , mettre ces lignes juste après le dernier end if

Dim x As Boolean
x = IIf(Target.Locked = True, 1, 0)
MsgBox "la cellule: " & Target.Address & " est-elle verrouillée? " & vbCrLf & _
x, vbInformation

Isab :)
 

Staple1600

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Re


Oui mais avec ActiveSheet.Protect AllowFormattingCells:=True
on ne peut plus fusionner de cellules, ce à quoi Ilino semble tenir fortement ;)

Et ne plus avoir accès à l'onglet Protection empèche si on le souhaitait de cliquer Masquée

PS: Ce ne sont là que des remarques issues de test pas des critiques à l'encontre de ton code Isab.
Je préfère préciser ;)
 

Isab

XLDnaute Occasionnel
Re : Déverrouiller les cellules selon la couleur

Bonjour :)


Re

Ilino

Et pourquoi donc cette obligation ?
La fusion est là pour l’esthétisme mais avec les ennuis
Centrer sur plusieurs colonnes équivaut à la fusion sans les ennuis mais avec le même résultat esthétique ;)

Donc le changement c'est maintenant ;)

Tu as parfaitement raison,
par ailleurs on peut toujours deproteger / fusionner autant que souhaité et préparer la feuille.. et ensuite

se mettre au travail ( on ne va pas faire que fusionner :) ....)


Re

Tu es bien sur que cela fonctionne dans tous les cas de figure ?
Ce n'est pas le cas chez moi ;)
par exemple
je fusionne deux cellules plus je mets en blanc
la case Verrouillée reste cochée


Ceci fonctionne dans le code que j'ai proposé.. et c'est à ça entre autre que je répondais.. :)

Mais en tous cas c'est sans souci :) nous sommes là pour passer le temps en étant utiles les uns aux autres.
:)

Aller je vais à mon cours de danse ..pour changer du VBxL

Isab / à bientôt
 

Staple1600

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Re

Ceci fonctionne dans le code que j'ai proposé.. et c'est à ça entre autre que je répondais.. :)
J'ai beau essayé (même en écoutant du jazz-fusion à donf pour conjurer le mauvais sort ;))
Il m'est impossible de faire les choses suivantes:
- fusionner des cellules (avec AllowFormattingCells:=True)
- de faire quoi que ce soit (si on met seulement ActiveSheet.Protect)

Le principal c'est au final cela fonctionne pour Iilino ;)
D'ailleurs, Ilino, c'est le cas ? C'est OK pour toi ?


PS: Comme je n'ai pas de cours de danse de prévu, je vais me rabattre sur la vaisselle pour changer de VBA.
(Pas sur que la dépense énergétique soit la même, mais par souci de sécurité je ne peux pas faire la vaisselle en dansant ;) )
 

Ilino

XLDnaute Barbatruc
Re : Déverrouiller les cellules selon la couleur

Bonjour


peut-être comme ceci ( au dos de la feuille):

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim CM As Long
Dim c As Range

'deprotege et verrou sur toute la feuille
ActiveSheet.Unprotect
ActiveSheet.Cells.Locked = True

'target count = CM ( c'est à dire:  soit 1, soit > 1 si fusion)
For Each c In Target
CM = IIf(c.MergeCells, CM + 1, 1)
Next c

If Target.Count = CM Then
  If Target.Interior.ColorIndex = xlNone _
  Or Target.Interior.ColorIndex = 2 Then
  Target.Locked = False
  End If
End If

ActiveSheet.Protect AllowFormattingCells:=True
End Sub

PS . la protection repose sur la couleur il est preferable de supprimer ce petit bout ( AllowFormattingCells:=True)
Bonne soirée
Isab
Bonsoir tous le monde
c’était un formidable cours que j'ai pris today (danse, vaisselle.. etc ) et en fin le code ( autrement vos codes VBA)
GRAZIE JM Grazie Isab
A+
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
175
Réponses
4
Affichages
216

Statistiques des forums

Discussions
312 218
Messages
2 086 363
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang