Selectionner des cellules selon leur couleur

Blastergeno

XLDnaute Nouveau
Bonjour à tous,

J'ai créé plusieurs fichiers dans lesquels j'ai utilisé une couleur non standard (son code RGB est 255 - 255 - 102) pour mettre en valeur toutes les cellules modifiables par l'utilisateur.

Je cherche à verrouiller toutes les autres cellules en les protégeant par un mot de passe. Mon problème, c'est que sélectionner toutes les plages de cellules modifiables sur toutes les feuilles, dans tous mes classeurs, ça me prendrait plusieurs jours (sans compter que je risque d'en oublier, ce qui serait très dommageable).

Je voudrais donc créer une macro qui trouve et sélectionne toutes les cellules modifiables d'un même classeur en utilisant comme critère la couleur que je leur ai attribué. Malheureusement, je ne sais pas faire cela pour une couleur non standard.

Je n'ai pas trouvé de topic correspondant sur le forum, donc si quelqu'un pouvait voler à mon secours, je lui serai très reconnaissant

D'avance merci !
 

Blastergeno

XLDnaute Nouveau
Re : Selectionner des cellules selon leur couleur

Michel, et les autres,

Voici un onglet que j'ai allégé pour respecter les contraintes de taille de fichier, mais l'essentiel y est (les cellules de couleur jaune au milieu des cellules à verrouiller)

Je travaille sur Office 2007. Est-ce un problème pour toi ? Veux-tu que j'envoie également une version compatible 2003 ?

Merci pour ton / votre aide !
 

Pièces jointes

  • Test xld.zip
    34.8 KB · Affichages: 91

MJ13

XLDnaute Barbatruc
Re : Selectionner des cellules selon leur couleur

Re Blastergeno

Voici 3 macros a tester:

Déprotège_Zone_Jaune: Pour déprotèger les cellules en jaune.

Déprotège_Zone_Jaune_Sans_Select: Pour déprotèger les cellules en jaune sans select (plus rapide).

Trouve_Couleur: Pour avoir la référence de la couleur d'une cellule sur laquelle on est (pour adapter à une autre situation).

Code:
Sub Déprotège_Zone_Jaune()
'MJ
ActiveSheet.Unprotect
Range("A1").Select
 Cells.Select
 Selection.Locked = True
Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    ActiveWorkbook.Names.Add Name:="zone", RefersToR1C1:=Selection() '_"=DEMO_xld!R1C1:R353C17"
For Each cell In Range("zone")
cell.Select
If Selection.Interior.ColorIndex = 36 Then Selection.Locked = False
Next
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
Cells(1, 1).Select
End Sub
Sub Déprotège_Zone_Jaune_Sans_Select()
'MJ
ActiveSheet.Unprotect
Range("A1").Select
 Cells.Select
 Selection.Locked = True
Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    ActiveWorkbook.Names.Add Name:="zone", RefersToR1C1:=Selection() '_"=DEMO_xld!R1C1:R353C17"
For Each cell In Range("zone")
'cell.Select
If cell.Interior.ColorIndex = 36 Then cell.Locked = False
Next
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
Cells(1, 1).Select
End Sub
Sub Trouve_Couleur()
MsgBox Selection.Interior.ColorIndex
End Sub

Merci à toi d'avoir initié cette demande car j'en avais besoin (comme 90 % des réponses auquel je répond).

Pour la suite, à voir plus tard.
 

Blastergeno

XLDnaute Nouveau
Re : Selectionner des cellules selon leur couleur

Super, ca ne collait pas parfaitement avec ce que je voulais faire, mais ça m'a permis d'y arriver, en réécrivant un petit morceau de code.

Sauf que, en bon débutant que je suis, j'ai oublié de sauvegarder mes modifs (honte sur moi!). Je posterai mes modifs et mettrais le sujet en résolu lorsque j'aurai réécrit mon code.

En tout cas merci beaucoup à toi, Michel, tu m'as épargné de longues heures de saisie manuelle !
 

Blastergeno

XLDnaute Nouveau
Re : Selectionner des cellules selon leur couleur

Voici la macro qui permet de verrouiller toutes les cellules blanches (non modifiables) et déverrouiller les jaunes (modifiables)


Sub Verrouillage()
'Blastergeno
'Dans chaque feuille, cette macro sélectionne toutes les cellules jaunes '(modifiables) et les déverrouille.Ainsi, lorsque le fichier sera protégé par mot 'de passe,les cellules jaunes resteront modifiables


Sheets(1).Select

For i = 1 To 7

Sheets(i).Activate
ActiveSheet.Unprotect "XXXX"

Range("A1").Select
Cells.Select
Selection.Locked = True

Range("A1:AL500").Select

For Each cell In Selection
If cell.Interior.Color = 6750207 Then cell.Locked = False
Next

ActiveSheet.Outline.ShowLevels RowLevels:=1
ActiveSheet.Outline.ShowLevels ColumnLevels:=1
Range("A1").Select


Next i

End Sub


Et j'ai complété par une macro à l'ouverture du fichier qui protège l'ensemble des feuilles du fichier

Merci pour ton aide, Michel !
 

Catheliana

XLDnaute Nouveau
Bonjour, j'ai utilisé votre macro pour débloquer les cellules en orange clair dans mon classeur et ça fonctionne très bien. Mon problème est que certaines cellules ne sont pas en orange par exemple les zones de commentaires. Est il possible de faire appliquer la macro partout sauf sur les cellules déjà débloqué précédemment? Par ailleurs mes cellules orange ont le code 19 et j'ai utilisé du vert qui a le même code comment faire dans ce cas là? Merci d'avance pour votre aide
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 929
dernier inscrit
Tangerine9