Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2016VBA - Une manière rapide de trouver les cellules verrouillées ?
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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.
Voilà. En fin la parcourir, non ! Worksheet.Range("LeNom") provoque une erreur si la plage nommée n'existe pas. Pas besoin de parcourir sa collection Names.
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 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.
Set GetNameValue = Worksheet.Evaluate(Name) -> B1:B10
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.
Oui étonnant, mais peut-être pas tant que ça car le même nom référence la même feuille.
Il est logique qu'il donne la préférence à la feuille.
Mais oui, à éviter pour ne pas se poser des questions métaphysiques.
Ceci dit j'ai vraiment un gros souci avec cette instruction: Worksheet.Application.Evaluate(Name).
Soit la situation suivante:
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)
Pour prendre la méthode Evaluate de l'objet Application il n'y a pas à préciser Worksheet devant. Mais de toute façon j'évite d'utiliser les méthodes de l'objet Application que possède aussi l'objet Worksheet.
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.
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 !
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD