Bonsoir,
Rend à César... Je n'ai pas mis ma macro ! Elle était juste un peu plus courte que celle de Theze parce je n'ai mis qu'une ligne pour la couleur, en supprimant TintAndShade et en mettant vbRed, plus parlant que la valeur numérique que personne ne retiendra... Je n'avais aucun besoin de répéter le même code, identique pour l'essentiel.
cela ne m'explique pas pourquoi la même macro crée avec l'enregistreur (sans modification de ma part) fonctionne dans un classeur vierge et pas dans mon classeur de travail...
Ce n'est pas un cas unique, et je ne t'expliquerai pas pourquoi Excel refuse à un endroit ce qu'il laisse passer ailleurs... quand cela arrive on ne peut que contourner en formulant autrement.
Cela arrive même quand on "parente" (pour utiliser l'expression de Theze)...
Sous ce terme, il faut savoir et bien se pénétrer de l'idée que lorsque tu écris une expression destinée à renvoyer un objet Excel, tu n'appelles pas directement l'objet mais tu l'invoques par une propriété de l'objet parent, lequel est lui-même invoqué à partir d'une propriété de son objet parent... Tu navigues ainsi dans une arborescence d'objet affiliés qui remonte jusqu'à l'objet Application. Pour un code propre et efficace, le parent doit être explicite. S'il fait défaut, ce sera implicitement Application, pour les propriétés qui peuvent être également des propriétés de Application et pour lesquelles son indication peut demeurer implicite. C'est le cas pour les principaux objets : classeurs, feuilles, cellules, et également le cas pour Selection, mais dans ces cas VBA doit rechercher à partir de Application l'élément actif qui peut être visé.
Cette écriture entraîne donc une perte de rapidité de l'exécution quand ça fonctionne, et parfois cela refuse d'aboutir pour des raisons que l'on peut identifier ou pas ! Par exemple la feuille active n'est plus celle qu'on croit, ou la sélection s'est modifiée... Mais parfois aussi rien ne paraît s'opposer à la bonne exécution et ça n'aboutit pas.
Donc tu "parentes" pour mettre toutes les chances de ton côté, et le cas échéant tu ajustes la formulation pour retenir celle qu'Excel accepte.
Cordialement.