Bonsoir,
C’est inutile; Cela fait longtemps que j’utilise Evaluate, avec de nombreuses versions d’Excel (97, 2000, 2002, 2003 et 2007 sous Windows, 98, X et 2004 sur Mac). Je n’ai jamais eu le moindre problème.
C’est pour cela que je tombe des nues avec ce résultat sous 2011.
D'un autre côté, je relève une incohérence dans ton code.
Tu ajoutes le Name à ActiveWorkbook et tu le lis dans ActiveSheet.
Mais je suppose que tu as fait ce petit bout de code pour l'exemple...
Ce n’est pas vraiment une incohérence : la méthode Evaluate n’est pas disponible pour l’objet Workbook.
L’emploi de ActiveSheet revient à définir le nom "PlafondURSSAF ", de niveau classeur, et à en tester la valeur associée, en entrant la formule "= PlafondURSSAF" dans une cellule de l’une des feuilles du classeur.
Il ne pourrait y avoir de problème que si le même nom était défini à la fois au niveau classeur et au niveau feuille, en faisant référence à des éléments distincts. Ce n’est pas le cas, car comme tu l’as deviné, j’ai fait ce bout de code pour l’exemple.
PS - Je suis également un peu surpris par ton code :
Pourquoi écrire
MsgBox ActiveSheet.Evaluate([PlafondURSSAF])
alors que
suffit ? C’est la première fois que je vois quelqu’un utiliser à la fois Evaluate ET des crochets. En principe, les crochets sont un raccourci qui permet de se passer d’Evaluate, ce qui permet d’écrire les choses de façon + concise. Si on les utilise, Evaluate est inutile.
Personnellement, je préfère Evaluate pour 2 raisons : je trouve désagréable l’emploi des crochets avec un clavier français (que ce soit sous Windows ou sur Mac), et surtout parce que c’est plus souple : on peut concaténer différents éléments dont des variables définies dans le code VBA, ce qui n’est pas possible avec les crochets.
J’ai acheté Office 2011, et je vais l’installer sur un Mac, pour voir si j’aboutis à la même aberration, en ce qui concerne Evaluate.
Je vous tiens au courant.
Merci quand même, d’avoir tenté de m’aider, et bon Noël !
Partager