Colorer les cellules non vérouillées

  • Initiateur de la discussion Initiateur de la discussion Mi_
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Mi_

XLDnaute Occasionnel
Bonjour le forum,

Disons qu'on doit vérifier quelles cellules sont vérouillées et pas vérouillées sur une feuille.

Existe-t-il un moyen (un macro) qui, une fois lancé, colore automatiquement (en rouge par exemple) les cellules non vérouillées de la feuille ? Et du classeur ?

Merci pour tout conseil,
Mi
 
Bonjour

En selectionant d'abord ta plage

Sub ColorierDeverouille()

For Each cell In Selection
If cell.Locked = False Then cell.Interior.ColorIndex = 3
Next
End Sub

Bonne soirée

Edition

sans selection avec calcul de la zone

Sub ColorierDeverouille()

macolonne = Range('A1').SpecialCells(xlCellTypeLastCell).Column
maligne = Range('A1').SpecialCells(xlCellTypeLastCell).Row
For x = 1 To maligne
For y = 1 To macolonne
If Cells(x, y).Locked = False Then Cells(x, y).Interior.ColorIndex = 3
Next
Next
End Sub

Message édité par: Pascal76, à: 10/04/2005 22:01
 
oups j'avais pas vu que tu avais demandé pour tout le classeur aussi

alors cela devrait donné

Sub ColorierDeverouille()

For Each ws In Worksheets
macolonne = ws.Range('A1').SpecialCells(xlCellTypeLastCell).Column
maligne = ws.Range('A1').SpecialCells(xlCellTypeLastCell).Row
For x = 1 To maligne
For y = 1 To macolonne
If ws.Cells(x, y).Locked = False Then ws.Cells(x, y).Interior.ColorIndex = 3
Next
Next
Next
End Sub

Bon courage
 
Bonsoir,
Celle-ci colore puis décolore toutes les cellules de toutes les feuilles du classeur (si les feuilles ne sont pas elle-même protégées...)

Sub Test()
For Each ws In Worksheets
ws.Activate
For Each o In ActiveSheet.UsedRange
If o.Locked = False Then
If o.Interior.ColorIndex = xlNone Then o.Interior.ColorIndex = 3 Else o.Interior.ColorIndex = xlNone
End If
Next
Next
End Sub

A+
 
Bien galopin j'avais pas pensé au coup du usedrange

Par contre je pense que tu n'es pas obligé d'activer tes feuilles comme cela tu gagnes un peu de temps si tu en as beaucoup

cela donnerait

Sub Test()
For Each ws In Worksheets
For Each o In ws.UsedRange
If ws.o.Locked = False Then
If ws.o.Interior.ColorIndex = xlNone Then ws.o.Interior.ColorIndex = 3 Else ws.o.Interior.ColorIndex = xlNone
End If
Next
Next
End Sub

Bonne soirée

Message édité par: Pascal76, à: 10/04/2005 22:14
 
Bonsoir,
C'est parfaitement exact, je résume donc :

Sub Test()
For Each ws In Worksheets
For Each o In ws.UsedRange
If o.Locked = False Then
If o.Interior.ColorIndex = xlNone Then o.Interior.ColorIndex = 3 Else o.Interior.ColorIndex = xlNone
End If
Next
Next
End Sub

A+
 
=> Post 500 - 11 Une Démo ! Une Démo ! Une Démo !

Bonsoir à tous,
Heureux du bon dénouement de ce Fil, mais je viens pour autre chose...

Attention, on va instaurer une démo Barbatruc de passage aux palliers d'XLD !!!

Alors Pascal Post - 11 !!! et...

Une Démo !!! Une Démo !!! Une Démo !!!


Et sinon on peut le faire à 100 comme notre ami Lien supprimé

Hihihi
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour