Colorer les cellules non vérouillées

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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

galopin01

XLDnaute Occasionnel
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+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

galopin01

XLDnaute Occasionnel
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+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
=> 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
 

Discussions similaires

Réponses
46
Affichages
1 K

Statistiques des forums

Discussions
313 032
Messages
2 094 576
Membres
106 054
dernier inscrit
Mohajer