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.
 

Dudu2

XLDnaute Barbatruc
Re-bonjour les forçat du verrouillage,
Et merci @job75 pour ta proposition.

En effet, scanner le UsedRange c'est bien quand on considère les données.
En l'occurrence, "mon" utilisateur va préférentiellement sélectionner des colonnes entières sur un tableau parce que ça va plus vite que de scroller lignes et colonnes et ajuster la sélection (qui sert de base au verrouillage) exactement sur les limites du tableau.

De plus le verrouillage n'est pas lié au UsedRange, et si la colonne A est verrouillée par l'utilisateur, s'il ajoute une valeur au-delà du UsedRange dans une colonne verrouillée, il faut qu'il soit rejeté par Excel.

Alors oui, ton système peut aller au-delà du simple UsedRange, mais comme il y a un scan des cellules, ça peut durer assez longtemps si une certain nombre de colonnes sont verrouillées, voire la feuille entière.
Enfin il me semble...
 

TooFatBoy

XLDnaute Barbatruc
La solution de @TooFatBoy d'utiliser des noms de gestionnaire de noms est finalement la plus simple.
Cette idée vient bien de mon cerveau, mais en fait ça ne vient pas de ma propre réflexion mais de ma mémoire...
En effet, je crois me rappeler d'un fil de discussion dans lequel l'excellent job75 utilisait un Nom pour mémoriser quelque chose (logiquement se devait être une plage, mais je ne me souviens plus très bien...).

Ce n'est donc pas vraiment ma solution mais plutôt celle de job75 ! 👍
 

Dudu2

XLDnaute Barbatruc
La MFC de @Phil69970 serait une bonne solution s'il ne fallait pas parcourir les cellules pour savoir si son format a été appliqué. C'est le parcours des cellules qui est rédhibitoire.

A priori, il n'existe pas de méthode pour avoir le Range qu'une MFC a défini pour sa condition réalisée.
Pourtant Excel le sait forcément.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Le propriété AppliesTo donne le Range sur lequel s'applique la MFC.
Il ne donne pas hélas le Range sur lequel la MFC a réalisé sa condition.

Pareil pour le ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions) à supposer qu'il n'y ait qu'une seule MFC.
 

TooFatBoy

XLDnaute Barbatruc
Dudu , tu parlais de faire commencer chaque Nom par le CodeName de sa feuille, pour pouvoir le retrouver facilement en fonction de la feuille, si j'ai bien compris.

Mais si au lieu de cela, tu donnes exactement le même nom à tous les Nom de plages, tu peux alors utiliser Sheets(LeNomDeTaFeuille).Range(LeNomDeLaPlage), et ça devrait utiliser automatiquement le bon Nom, c'est-à-dire celui faisant référence à la feuille en question.
 

Dudu2

XLDnaute Barbatruc
Sheets(LeNomDeTaFeuille).Range(LeNomDeLaPlage), et ça devrait utiliser automatiquement le bon Nom, c'est-à-dire de la feuille en question.
Ça je suis pas sûr. C'est un peu ce à quoi faisait référence @Dranreb. Mais les noms ne semblent pas qualifiés par le nom de la feuille dans le Gestionnaire de noms même si leur "étendue" est la feuille.
Alors j'ai des gros doutes. Le préfixage par le CodeName fonctionne tel que je l'ai implémenté, alors...
 

Dudu2

XLDnaute Barbatruc
Oui, c'est sûr on peut, manuellement ici, définir des noms identiques sur des "étendues" de feuilles différentes.
1714660433880.png

Alors il faudrait que j'adapte mon code pour indiquer l'"étendue" des valeurs à définir et retrouver.
Oui, ok... c'est possible.

D'ailleurs d'un point de vue syntaxique en VBA, je sais pas trop comment faire pour désigner un nom spécifique d'une feuille.
 

Discussions similaires

Statistiques des forums

Discussions
315 126
Messages
2 116 491
Membres
112 763
dernier inscrit
issam2020