Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 

Dranreb

XLDnaute Barbatruc
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.
 

Dudu2

XLDnaute Barbatruc
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 !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous ,

Un essai dans le classeur joint.

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") )

Un exemple d'utilisation en cliquant sur le bouton Hop!

Le code est dans module1.
 

Pièces jointes

  • Dudu2-Cellules verrouillées- v1.xlsm
    25.9 KB · Affichages: 2

Dudu2

XLDnaute Barbatruc
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
 

Dranreb

XLDnaute Barbatruc
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.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil


@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
 

TooFatBoy

XLDnaute Barbatruc
Ré-essaie en référence A1 sur une plage simple
Chez moi il décale systématiquement la plage par rapport à l'ActiveCell.
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.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…