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.
Bonjour.
Info: Un objet Worksheet à sa propre collection Names. La clé de ses éléments est différente de leur propriété Name en ceci qu'elle ne comporte pas le préfixe de la feuille. Un Range peut y être spécifié comme second paramètre de la méthode Add. La méthode Evaluate ou Range de l'objet Worksheet reconnait aussi le nom sans préfixe et renvoie le Range.
@TooFatBoy,
Ré-essaie en référence A1 sur une plage simple
Chez moi il décale systématiquement la plage par rapport à l'ActiveCell.
Si je lui dis A1:A2 et que ActiveCell est J1, il va en fait stocker J1:J2.
Bonjour @Dranreb,
Je ne sais pas référencer un Name par sa clé.
Donc pour différencier un Name générique appliqué à plusieurs feuilles je l'ai préfixé par le CodeName de la feuille qui ne risque pas d'avoir des caractères non supportés pas le Name qui n'en supporte pas beaucoup !
La référence peut être un Range. Ce Range sera restitué par une méthode Range ou Evaluate du Worksheet sans avoir à lui préciser le préfixe de feuille.
C'est une procédure DicoPlageVerr qui renvoie un objet "dictionary" dont les clefs sont les adresses des plages de cellules verrouillées (on pourrait remplacer le dictionary par une collection pour les MACistes).
Le seul paramètre de la procédure est la feuille concernée.
exemple d'appel : Set PlagesVerr = DicoPlageVerr( Worksheets("Feuil1") )
D'ailleurs en enregistrant une macro sur la création d'un Name propre à la feuille Feuil1, je ne vois pas trace d'une clé particulière. Je l'avais essayé pour tenter d'exploiter cette particularité mais ne voyant rien j'ai abandonné l'idée pour revenir à un système de préfixe.
VB:
Sub Macro1()
'
' Macro1 Macro
'
'
Range("G3:H3").Select
ActiveWorkbook.Worksheets("Feuil1").Names.Add Name:="aaa", RefersToR1C1:= _
"=Feuil1!R3C7:R3C8"
ActiveWorkbook.Worksheets("Feuil1").Names("aaa").Comment = ""
End Sub
RefersToR1C1 est inutile, RefersTo:=Selection suffit
Un élément de la collection Names de l'objet Worksheet fait aussi partie de celle de l'objet Workbook, et sa propriété Name contient donc le préfixe de feuille, mais ce n'est pas sa clé, normalement.
@Dudu2
Sinon un truc m'échappe, si on créé des plages nommées identifiants des cellules verrouillées, on connait donc l'adresse de ces plages, et elles sont accessibles dans le gestionnaire de noms
Et là encore, rapidement et sans VBA, on peut identifier (Coller des noms)
Autre précision: avec CTRL+F
s'affiche aussi la valeur et ou la formule des cellules verrouillées
Je ne peux pas essayer actuellement. Mais si je me rappelle bien de mes tests, lors de l'utilisation de la notation A1 la plage obtenue était bien la même quelle que soit la cellule sélectionnée (A1 ou une autre).
En toute logique, c'est en notation R1C1 que ça devrait être relatif à la cellule active je pense.
Sinon un truc m'échappe, si on créé des plages nommées identifiants des cellules verrouillées, on connait donc l'adresse de ces plages, et elles sont accessibles dans le gestionnaire de noms