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.
 

TooFatBoy

XLDnaute Barbatruc
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.
Ce que je dis, c'est que je pense que si tu appelles tous tes Noms par exemple "MaPlage", quand tu utilises Sheets("Feuil1").Range("MaPlage") ça utilise alors la plage nommée MaPlage de la feuille "Feuil1".


Alors j'ai des gros doutes. Le préfixage par le CodeName fonctionne tel que je l'ai implémenté, alors...
Moi aussi j'ai un doute... il faut tester. 😉
 

Dudu2

XLDnaute Barbatruc
Alors j'ai un gros problème en retrieve.
Si j'arrive à créer un nom X d'étendue feuille en parallèle d'un nom X d'étendue classeur, Evaluate() qui n'accepte d'être qualifié QUE par Worksheet n'est plus capable de me retourner la valeur du nom d'étendue classeur.
1714661817348.png


Set GetNameValue = Worksheet.Evaluate(Name) -> B1:B10
 

Dudu2

XLDnaute Barbatruc
Ok Set GetNameValue = Worksheet.Application.Evaluate(Name)

Ceci dit, quand il y a le même nom au niveau feuille et au niveau classeur, même le ThisWorkbook.Names(Name).Value retourne la valeur du nom d'étendue feuille.

Alors j'ai l'impression que dans ce cas, la valeur du nom d'étendue classeur n'est pas atteignable.
Ce qui semble logique.
 

Dudu2

XLDnaute Barbatruc
Ceci dit j'ai vraiment un gros souci avec cette instruction: Worksheet.Application.Evaluate(Name).

Soit la situation suivante:
1714664267940.png


Worksheet.Name = "Feuil1"
Worksheet.Parent.Names("TestName").Value ->=Feuil1!$A$1:$A$10
Worksheet.Application.Evaluate("TestName").Address -> $B$1:$B$10 (de la Feuil2 !!!)

Je ne peux pas compter sur Evaluate(). Il faut que j'utilise la Value.
Value = Worksheet.Parent.Names("TestName").Value
Range(Mid(Value, 2)).Address -> $A$1:$A$10 (de la Feuil1)
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Oui mais si Application.Evaluate() n'est pas qualifié, je ne sais pas du tout où il va le prendre.
C'est pour ça que je suis retourné sur la Value dont au moins je suis sûr du contenu.
Je vérifie mon code et je le republierai avec l'option de étendue.
 

Dudu2

XLDnaute Barbatruc
Quant au Delete c'est encore pire !
Quand des names sont identique mais pas sur la même étendue, malgré le fait que j'adresse explicitement un Name au Delete (par son nom ou par son indice, vérifiés par la Value) et il m'en delete un autre.

En fait il delete le 1er nom qu'il trouve dans la liste ! Même si on lui désigne le 2ème.
Et même si le nom interne est préfixé par le nom de la feuille, il s'en fout !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 474
Messages
2 088 723
Membres
103 935
dernier inscrit
GGV