Re : L'object Pictures dans la feuille de calcul: Élément de langage masqué
Salut
Effectivement, au fil des versions d'Excel, on a quelquefois la surprise de découvrir que tels éléments du langage qu'on utilisait dans de précédentes versions sont désormais masquées.
Cela tient souvent à ce que le VBA s'est enrichi de nouveaux objets, ou que d'anciens objets ont été complétés. C'est le cas de Pictures. Cela ne veut pas dire qu'on ne peut plus insérer une image par programmation, mais à partir d'XP (si je ne me trompe) il vaudrait donc mieux passer par l'objet Shapes, via sa méthode AddPicture. Au passage cette méthode est plus contraignante, parce qu'il faut préciser les coordonnées de l'image et ses dimensions, mais on peut le voir également comme l'élément d'une plus grande souplesse.
Heureusement, on peut continuer à utiliser les éléments masqués qui sont toujours actifs pour assurer la compatibilité ascendante. D'ailleurs l'enregistreur de macros auto ne s'en prive pas, alors pourquoi pas nous ?..
Mais cependant quel avantage y a-t-il à utiliser Shapes.AddPicture plutôt qu'un objet Pictures ? J'y vois là un élément de rationalisation des objets. Etant donné que pratiquement tout ce qui est graphique sur la feuille peut être manipulé en tant que Shape, il est plus simple d'écrire :
Set Sh = Feuil1.Shapes.AddPicture(...)
que Feuil.Pictures.Insert(...)
parce que les actions possibles sur cette image seront plus nombreuses via l'objet Shape qu'en passant par l'ancien objet Pictures.
Si vous voulez continuer à voir les propriétés et méthodes des objets cachés, il faut, depuis VBA, taper F2 pour afficher l'explorateur d'objets, puis, sur la fenêtre centrale, faire un clic droit et cocher "afficher les membres masqués"
Notons que, si je ne me trompe (je ne peux pas vérifier je suis sur XP ici), une fonction comme Application.MemoryFree est masquée dans Excel 2003 et en plus elle renvoie une valeur incorrecte, il faut donc se méfier.