indexs dans collection pictures incohérents

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 !

patricktoulon

XLDnaute Barbatruc
bonjour a tous
j'ai un soucis avec pictures
cette petite boucle me liste mêmes les bouton activX et toutes shapes confondues
alors que je n'ai qu'une seule image 😳 😵
VB:
Sub test()
    With ActiveSheet
        For i = 1 To .Pictures.Count
            MsgBox .Pictures(i).Name
        Next
    End With

End Sub
c'est un peu gênant 😉

Résumé et résolution adoptée pour cette longue discussion

la collection pictures intégrant tout le oléobjects y compris les activeX
on est obligé de faire une boucle et de créer un range de shapes de type (13)msopicture
il y donc 2 solutions simples

Laurent en post91 qui la créé en selectionnant tout les shapes concernées
moi en post95 qui le cree avec un tableau de noms d'images
 
Dernière édition:
Solution
Re,
Partie 2
Comment Travailler avec Chaques images stockés de la feuille Excel dans la variable Objet "sr"
Avec une Boucle Ou juste sur une précise (J'ai choisie juste une précise est désactivé la boucle)
Pour Travailler avec les images :
https://docs.microsoft.com/fr-fr/office/vba/api/excel.pictureformat
Méthodes
Propriétés
Code...
Bonjour patricktoulon, le forum,

J'ai abandonné depuis longtemps l'idée de comprendre la différence entre une Picture et une Shape.

Je remarque cependant que le TypeName d'une Picture donne une information utilisable :
VB:
Sub test()
With ActiveSheet
    For i = 1 To .Pictures.Count
        MsgBox TypeName(.Pictures(i))
    Next
End With
End Sub
De plus contrairement aux Shapes les listes de validation et les commentaires ne sont pas comptés.

Bonne journée.
 
Bonjour

La réponse est dans la lecture attentive de ceci :
En rappelant :
1) que la collection Pictures est une collection masquée d'objets Picture également masqués qui ne sont encore (jusqu'à quand ?) présents que pour assurer une compatibilité avec les anciennes versions de Excel (par exemple Excel 97)
2) Que les objets Shapes sont également de type msoPicture

Je déconseille personnellement vivement de "travailler" avec la collection masquée Pictures.
 
Bonjour Job, Patrick, Jmfmarques,

Just for the fun.

J'ai fait un essai en PJ en listant les Shapes trouvés et les Pictures trouvés sur une même feuille.
Et ce n'est pas la même chose. Ni la même liste, ni les même Ref.

Par ex Picture7 est référencé comme Shape N°4 ou Picture N°2.
Le rectangle est trouvé par Picture mais pas par Shape.

Donc la collection Shapes est plus "complète" que la collection Pictures.
Mais dans tous les cas, on ne peut différencier les images des ActiveXobjects.
 

Pièces jointes

Dernière édition:
re
bonjour a tous
@job75
With ActiveSheet
MsgBox .Pictures(.Pictures.Count).Name
End With
et ben non !!!!!!! pas dans mon contexte 😉
sinon je n'aurais pas poser cette question 😉

@jmfmarques
y a pas de mal j'ai voulu heurté personne

@sylvanu je vais regarder

pour que ca soit clair pour tout le monde :
dans ma feuille j'ai
4 bouton ActivX
une shape automatique msorectangle
et enfin une SEULE !! picture qui est insérer(pictures.insert) /delétée dynamique autant de fois que je clique sur bouton

donc en effet l'image devrait être toujours le dernier object

donc l'image est
MsgBox ActiveSheet.Pictures(ActiveSheet.Pictures.Count).Name
voir meme
MsgBox ActiveSheet.shapes(ActiveSheet.shapes.Count).Name

c'est dommage que l'on puissent plus différencier les shapes,picture,activX

par exemple
MsgBox ActiveSheet.Pictures(1).Name
me donne le nom du premier bouton ActivX😵😵😵😵😳😵😵😵
c'est ridicule vous en conviendrez 😉
 
On peut éliminer les Shape automatique ( Rectangle par ex ) en utilisant Shape car alors ils ne sont pas référencés.
Mais impossible me semble t-il de différencier Image et ActiveXObject.
Regardez mon fichier, il doit ressembler au votre .
 
Bonjour le fil

[aparté]
y a pas de mal j'ai voulu heurté personne
Juste une petite chose qui me heurte*: le titre de la discussion 😉
Titre qui fait pédaler dans la semoule les Discussions similaires
Sur ce, un bon week-end à tous
*: en vrai, j'ai pas eu mal, mais je pige pas un truc moi non plus
Comment un vieux de vieille du forum n'a pas le réflexe d'affubler ses discussions d'un titre explicite ? 😉

[/aparté]

• Sinon pourquoi ne pas nommer l'image (avec le même nom) à chaque insertion ?
VB:
Sub Macro1()
ActiveSheet.Pictures.Insert("C:\Users\STAPLE\Pictures\test.jpg").ShapeRange.Name = "TOTO"
MsgBox TypeName(ActiveSheet.Shapes("TOTO"))
End Sub
Comme cela plus de problème à chercher l'image, puisqu'on connait son nom.
 
re
@sylvanu
oui j'ai vu ca liste comme des mêmes type d'object dans l'ordre de création avec pictures
mais la ou le bas blaisse
c'est que la liste est fait en 2 fois en fait avec pictures
ca liste d'abords shapes et pictures dans l'ordre de creation
et ensuite les activX

autrement dit si j'ai créé dans cet ordre
shape1
bouton1(activx)
picture1
shapes2
listbox1
shape3

j'aurait ma liste comme ca
shape1
picture1
shapes2
shape3
bouton1
listbox

du vrai n'importe quoi 😉
 
Bonjour le fil

[aparté]

Juste une petite chose qui me heurte*: le titre de la discussion 😉
Titre qui fait pédaler dans la semoule les Discussions similaires
Sur ce, un bon week-end à tous
*: en vrai, j'ai pas eu mal, mais je pige pas un truc moi non plus
Comment un vieux de vieille du forum n'a pas le réflexe d'affubler ses discussions d'un titre explicite ? 😉

[/aparté]

• Sinon pourquoi ne pas nommer l'image (avec le même nom) à chaque insertion ?
VB:
Sub Macro1()
ActiveSheet.Pictures.Insert("C:\Users\STAPLE\Pictures\test.jpg").ShapeRange.Name = "TOTO"
MsgBox TypeName(ActiveSheet.Shapes("TOTO"))
End Sub
Comme cela plus de problème à chercher l'image, puisqu'on connait son nom.

c'est ce que j'ai fait Staple1600 je l'ai même variabilisé en global module comme ca je suis tranquille 😉

c'est dommage de ne pas pourvoir se servir des collections quand meme
 
Re tout le monde,

Patrick, je disais simplement :

1- On peut éliminer les Shape automatique en utilisant Shape car alors ils ne sont pas référencés.
2- Impossible me semble t-il de différencier Image et ActiveXObject.
3- Les fonctions Shape et Picture ne font pas la même chose.

Je ne vois pas en quoi c'est "du vrai n'importe quoi".

Sur ce, je vous souhaite une excellente journée.
 
- 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
Retour