récupérer le nom d'un objet

mutzik

XLDnaute Barbatruc
Bonjour à toutes et tous,

Cela fait trois mois que je bute sur ce prob :

j'insère une image (ou un objet quelconque) sur ma feuille de calcul.

Je voudrais qu'en cliquent sur cet objet, il me renvoie le nom de l'objet.

Par ex, je déssine un réseau avec pc, hubs, switch...
J'ai déja une base dans laquelle j'ai les adresses ip, le nom de l'objet et d'autres infos sur les équipement en question.

En cliquent donc sur cet objet et en récupérant son nom (ça je sais pas faire), j'aimerais ouvrir un usf qui me donne toutes les caractéristiques de mon objet (ça je sais faire)

Milles mercis
 
P

philou

Guest
salut mutzik

imagine toi que je cherche exatement la même chose que toi !
regarde le fil 'lien hypertexte et userforms'

si tu trouve une info préviens moi je ferai la meme chose

a+
philou
 

Hervé

XLDnaute Barbatruc
bonsoir

Ce code permet de récupérer le texte indiquer dans le shape qui à lancer la macro:

MsgBox ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text

et celui ci son nom :
MsgBox ActiveSheet.Shapes(Application.Caller).Name

a plus
 

Hervé

XLDnaute Barbatruc
re

un petit exemple pour étayer mon propos.

a plus [file name=Classeur5_20050308173421.zip size=6402]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur5_20050308173421.zip[/file]
 

Pièces jointes

  • Classeur5_20050308173421.zip
    6.3 KB · Affichages: 147

_Thierry

XLDnaute Barbatruc
Repose en paix
Salut Philou, Hervé

Je ne vois pas en quoi ça peut vous faire avancer, à mois de faire une liste de Select Case ensuite pour lancer des UserForms... Mais ça sent l'usine à gaz...

Sinon voilà un code tout simple :
Code:
Option Explicit

Sub TheObjectsTracker()
Dim TheObjectName As String
TheObjectName = Application.Caller

MsgBox TheObjectName

End Sub

Qui retournera le nom de l'object ayant lancé la macro TheObjectsTracker, pour autant que l'on ait assigné cette macro à l'objet...

Bonne Fin de Journée
@+Thierry

Arf pas vu Hervé bonjour aussi à toi, et donc OK pour application.Caller (le truc de MrExcel de l'autre fois d'ailleurs)

Message édité par: _Thierry, à: 08/03/2005 17:40
 

mutzik

XLDnaute Barbatruc
Thierry,

Concernant ta question ' à quoi peut servir cela ', imagine que mon boss (directeur informatique) dispose sur excel d'un plan de tous les secteurs de l'usine avec des rectangles bleus pour les pc, verts pour les hubs, jaunes =imprimantes ...
Chaque rectangle porte le nom codé qui le repertorie dans ma base de données

Par un click sur cet objet, j'ouvre un msgbox (pour le moment) qui me dit de quel pc dispose cet utilisateur (toutes les caractéristiques de l'objet cliqué)

En tout plus de 300 objets sur une 20ne de feuilles.
Nous sommes, lors d'un déploiement de nouveau pc constamment en train de les réaffecter à d'autres personnes.

mise à jour de mon parc :
- déplacement de mon rectangle pc ou imprimante vers sa nouvelle affectation
- modification dans la base de données du nouveau détenteur de ce pc.

!! Mon fichier xls est à jour

et hop !!
Merci et bonne continuation ;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Mutzik, Philou, Hervé, le Forum

Alors j'en suis très heureux, je ne prendrai que 10% alors de ta promo... payable en Duvel

Et merci pour tes explication, je vois mieux le topo, maintenant ce qu'il te faut c'est une macro pour assigner la macro commune à tes 300 objects... Cà doit pouvoir ce faire... Mais là je n'ai rien sous la main...

Bon App
@+Thierry
 
M

mutzik

Guest
Salut Thierry,

Ne t'en fais pas, avec la réponse donnée plus haut (application.caller), je sais retrouver le nom de l'objet et le reste (msgbox ...) ne me pose plus de prob

B) (y'a du soleil aujourd'hui)

merci
Bertrand
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re MutZig

Nan nan, je m'inquiète pour mon pourcentage en Duvel !!!

Voici encore un Barbatruc !!!

Ici donc la Macro Commune Comme ma Démo Lien supprimé
Code:
Sub TheCommunShapeMacroIdentifier()
Dim TheShapeCaller As String
    TheShapeCaller = Application.Caller
         MsgBox TheShapeCaller
End Sub


Mais ici le Barbatruc pour tes 300 Shapes disséminées dans toutes tes Feuilles...
Code:
Sub ShapesCollector()
Dim WS As Worksheet
Dim i As Integer

    For Each WS In Worksheets
    
        For i = 1 To WS.Shapes.Count
            WS.Shapes(i).OnAction = 'TheCommunShapeMacroIdentifier'
        Next i
    Next WS
End Sub

Of course je ne peux pas par contre les nommer pour toi... Quoique si elle sont dessinée dans le même ordre que ta base de données... hé hé... Just For The Fun ... (MyArray serait donc un Tableau récupérant une colone de ta base)
Code:
        For i = 1 To WS.Shapes.Count
            WS.Shapes(i).OnAction = 'TheCommunShapeMacroIdentifier'
            WS.Shapes(i).Name = MyArray(i)
        Next i

Sur ce Forum... Impossible n'est pas XLD-Compliant !

Bon App
@+Thierry

Message édité par: _Thierry, à: 09/03/2005 13:01
 

mutzik

XLDnaute Barbatruc
A que coucou Thierry et Hervé et philou et et et et et j'en oublie et tous les xldiennes et diens (t'en auras pas)

Sans vouloir aller aussi loin, j'ai joint un exemple de ce que je suis en train de faire.

C'est peut-être un fichier qu'on peut mettre en libre service car je crois qu'il pourrait en intéresser plus d'un

Concernant les duvel, j'ai donc le droit d'en boire 90 % et je t'envoie les 10% restant. Mais là t'as pas d'bol, je bois pas d'alcool (ça sonne bien, hein ! )

bon après midi
Bertrand [file name=ListeMat.zip size=8281]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeMat.zip[/file]

Message édité par: mutzik, à: 09/03/2005 14:13
 

Pièces jointes

  • ListeMat.zip
    8.1 KB · Affichages: 82

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Mutzik, le Fil

Ci-joint une démo de travail.

Tu comprendras mieux ce que je veux dire... Avec mes macros de 'Mass Shappes Attribution de Macro'... Ou encore en second Test comment nommer tes Shapes... (plus aléatoire, car dépendant de l'index qui lui, est attribué en fonction de l'ordre de création des shapes)

Par contre je déconseille fortement de mélanger du VBA et des Formules pour obtenir un programme... C'est ce qu'il y a de pire quand on passe derrière quelqu'un qui, faute de n'avoir su tout faire en VBA passe par des cellules avec formules pour arriver au résulat (comme ici avec un RechercheV)

Donc tu verras comment je m'y prends pour faire tout 100% VBA aussi

Bon Aprèm
@+Thierry [file name=ListeMat-V01_20050309152644.zip size=20489]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeMat-V01_20050309152644.zip[/file]

Message édité par: _Thierry, à: 09/03/2005 15:27
 

Pièces jointes

  • ListeMat-V01_20050309152644.zip
    20 KB · Affichages: 76

Discussions similaires