Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Récupérer le nom d'une image

rounil09

XLDnaute Occasionnel
Bonjour la liste,
Sur EXCEL 2007 lorsqu'on insère une photo (Menu insertion puis image) d'un fichier jpg, EXCEL nomme cette image. Ce nom apparaît dans la barre des noms en cliquant sur la photo. (exemple image 253)
Quelqu'un peut-il m'ndiquer comment récupérer ce nom (image 253) dans une cellule ?
 

mth

XLDnaute Barbatruc
Re : Récupérer le nom d'une image

Bonjour Rounil09,

Voici un petit essai de code :
Code:
Option Explicit
Dim s As Shape, x As String
Sub img()
 
   For Each s In ActiveSheet.Shapes
    x = s.TopLeftCell.Address
    Range(x).Offset(0, 1) = s.Name
   Next s
End Sub

Je me suis inspirée du site de JBoisgontier (dossier Images et shapes)

Bien à toi,

mth

Edit: Bonjour Pierrot
(j'ai peut-être un peu compliqué ... )
Bonne journée à toi,
m
 

Pièces jointes

  • NomImge.zip
    21.3 KB · Affichages: 197
Dernière édition:

rounil09

XLDnaute Occasionnel
Re : Récupérer le nom d'une image

Merci mth et pierrot 93, avec du retard car j'ai du m'absenter...

Vos codes fonctionnent bien, mais en fait j'ai une photo et plusieurs objets dans ma feuille et je voudrais que la macro ne s'applique qu'à la photo (Nommée : image xxx) et pas aux autres objets (Nommés : pictures xxx, groupes xxx, ou boutons xxx, ...).

Je bataille en vain pour essayer d'adapter dans ce sens la macro de mth.
 

mth

XLDnaute Barbatruc
Re : Récupérer le nom d'une image

re

Peut-être ainsi ? (même source site de JB):

Code:
Sub img()
   For Each s In ActiveSheet.Shapes
    x = s.TopLeftCell.Address
    If s.Type = 13 Then Range(x).Offset(0, 1) = s.Name
   Next s
End Sub

Bonne soirée,

mth
 

rounil09

XLDnaute Occasionnel
Re : Récupérer le nom d'une image

Inutile de vous triturer les méminges.

J'ai trouvé en cherchant dans le forum (2009) le code suivant qui correspond à mon besoin.


Dim Sh As Shape

For Each Sh In Me.Shapes

If Sh.TopLeftCell.Address = "$AW$1" Then
Sh.Name = "Nouveau Nom"
End If

Next
 

escouger

XLDnaute Occasionnel
Bonjour j'ai la même question, mais je souhaiterais retrouver le nom de mon image directement lorsque cette image déclenche la macro.
Exemple: J'ai 3 images qui sont associées toutes les 3 à une même macro.
Je voudrais dès le début de cette macro identifier le nom de l'image qui a déclenché la macro.
Si je cliques sur image1 je retrouve "image1" dans une zone de type string
Si je cliques sur image2 je retrouve "image2" .dans la même zone de type string que ci-dessus...etc
Merci d'avance de votre aide
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @escouger , ce vieux Fil, le Forum

Un moyen détourné assez simple à mettre en place.... On transmet la string directement à la macro de traitement sans passer par une cellule ou autre "zone de type string".

VB:
Option Explicit

Sub Rectangle1_Click()
QuiRun "Rectangle1"
End Sub

Sub Rectangle2_Click()
QuiRun "Rectangle2"
End Sub

Sub Rectangle3_Click()
QuiRun "Rectangle3"
End Sub

Sub QuiRun(ByVal Qui As String)
    MsgBox "Hello from " & Qui
End Sub

Bonne soirée
@+Thierry
 

JM27

XLDnaute Barbatruc
bonjour

VB:
Sub Image1_Cliquer()
    tutu
End Sub
Sub Image2_Cliquer()
    tutu
End Sub
Sub Image3_Cliquer()
    tutu
End Sub

Sub tutu()
    MsgBox Application.Caller
End Sub
 

Pièces jointes

  • exemple.xlsm
    24.3 KB · Affichages: 29

patricktoulon

XLDnaute Barbatruc
bonsoir à tous
quand on insert une image et que l'on veut connaitre son nom on peut utiliser le .count de la collection shapes juste après l'insertion
with activesheet:msgbox .shapes(.shapes.count).name :end with
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Patrick, re le Fil

Ah oui et aussi (sous office 2013), je vois ceci en haut, à gauche de la barre de formules)


Et avec ton code on a bien le MsgBox en confirmation

Bonne soirée
@+Thierry
 

Discussions similaires

Réponses
10
Affichages
265
Compte Supprimé 979
C
Réponses
8
Affichages
168
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…