XL 2016 VBA - Une manière rapide de trouver les cellules verrouillées ?

Dudu2

XLDnaute Barbatruc
Bonjour,
Je n'y crois pas trop, mais à part parcourir les cellules une à une (ce qui n'est envisageable que sur un Range limité) y a-t-il un moyen de trouver le Range des cellules verrouillées d'une feuille ?
Merci.
 

Staple1600

XLDnaute Barbatruc
Re

@Dudu2
Oui, je vois bien que tu le fais, mais je SUIS en VBA.
Puisque VBA demandé, tout en utilisant mon CTRL+F ;)
Code:
Sub CellulesVerrouillées()
  With Application
    .FindFormat.Clear: .ReplaceFormat.Clear
    .FindFormat.Locked = -1
    .ReplaceFormat.Interior.Color = RGB(255, 0, 0)
    Cells.Replace "", "", , , , , True, True
    .FindFormat.Clear: .ReplaceFormat.Clear
  End With
End Sub
Ne pas tester sur une feuille vierge
(puisque par défaut toutes les cellules d'une feuille sont verrouillées)
L'inconvénient du code ci-dessus c'est qu'il colorie toutes les cellules et pas seulement celles de plages nommées.


PS: code initial de R. Rothstein
 

Dudu2

XLDnaute Barbatruc
En fait je rappelle le truc...
En VBA je dois créer une "plage sécurisée" dans des feuilles => Locked = True sur cette plage et feuille protégée.
A l'affichage bien ultérieur d'une feuille je dois retrouver cette "plage sécurisée".
Le seul moyen jusque là est de stocker l'adresse de cette "plage sécurisée" dans un nom du gestionnaire de noms relatif à la feuille.

Maintenant, pour retrouver cette "plage sécurisée" sans en stocker l'adresse dans un nom, je vais essayer le code de @Staple1600 que je n'ai pas bien compris en 1ère lecture.
 

Staple1600

XLDnaute Barbatruc
Re

@Dudu2
Pour tester
J'ai d'abord fait CTRL+A puis décocher Verrouillé
Ensuite j'ai recoché Verrouillé sur plusieurs groupes de cellules

Et la macro les colorie alors en rouge identifiant ainsi rapidement en VBA (et sans boucle) les cellules verrouillées
J'ai bon là ?
;)
 

Staple1600

XLDnaute Barbatruc
Re

@Dudu2
Ca a donné quoi ton test du code du message#46?
Tu valides ?

@TooFatBoy
Même remarque que dans le message#19
;)

Sinon pour ta question de rapidité, je n'en sais rien et je ne cherche pas à la savoir
Cette discussion est celle de @Dudu2, pas la mienne.
Je te laisse faire le test, il te suffit pour cela de rajouter N lignes de code pour le savoir
(ce qui n'est pas top quand on se préoccupe de rapidité ;) )
 

Dudu2

XLDnaute Barbatruc
On s'éloigne donc du cas de la plage unique portant le même nom fixe dans toutes les feuilles …
Pour l'instant je n'ai besoin que d'une seule plage (multi-areas éventuellement) par feuille.
Je préfixe le nom de cette plage par le CodeName de la feuille.
Ex: Name = ActiveSheet.CodeName & "°PlageSécurisée"
 

Dudu2

XLDnaute Barbatruc
Comment référencer un Nom de la Feuille ou parcourir la collection Names de l'objet Worksheet ?
Et aussi comment créer un Nom qui soit rattaché à une feuille ? Est-ce le préfixe du Range Feuil1! qui le définit ?
 

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo