L'object Pictures dans la feuille de calcul: Élément de langage masqué

MichelXld

XLDnaute Barbatruc
Bonjour

J'ai rédigé un tutoriel qui décrit l'objet feuille de calcul, ainsi que ses différentes propriétés et méthodes:

Dans ce cadre, l'objet Pictures me pose un cas de conscience:
J'utilise régulièrement cet objet mais l'aide Excel indique qu'il s'agit d'un élémént masqué.


Code:
'Insère une image dans la feuille de calcul
Worksheets("Feuil1").Pictures.Insert "C:\dossier\Image2.jpg"


Code:
'Boucler sur toutes les images contenues dans la feuille afin de les 
'enregistrer sur le disque:
 
Sub ExtraireImagesFeuille()
    Dim Pict As Picture
    Dim Nb As Byte
    
    Application.ScreenUpdating = False
    
    ' boucle sur les images de la feuille
    For Each Pict In Worksheets("Feuil1").Pictures
        'copie image
        Pict.CopyPicture
        
        'crée un graphique
        With ActiveSheet.ChartObjects.Add(0, 0, Pict.Width, Pict.Height).Chart
            'colle l'image dans graphique
            .Paste
            'enregistre le graphique au format gif
            .Export ThisWorkbook.Path & "\" & Pict.Name & ".gif", "GIF"
        End With
        
        Nb = ActiveSheet.ChartObjects.Count
        'supprime le graphique
        ActiveSheet.ChartObjects(Nb).Delete
    Next Pict
    
    Application.ScreenUpdating = True
End Sub


Ma question est donc: pourquoi cet élément est il masqué?
Est ce qu'il existe uniquement pour une compatibilité avec des versions Excel antérieures?

L'objectif de cette question est de savoir s'il est souhaitable de continuer à utiliser l'objet Pictures, ou s'il est préférable d'utiliser l'objet Shapes (msoPicture)


Toutes vos informations à ce sujet sont les bienvenues.


D'avance merci
bonne journée
MichelXld
 

Ti_

Nous a quitté
Repose en paix
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.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 224
Messages
2 086 410
Membres
103 201
dernier inscrit
centrale vet