Récupérer la position précise d'une image en cliquant dessus

Bonjour la commu,

Je me tourne à nouveau vers vous car me voilà face à un problème qui me fait grisonner les cheveux, je vous explique :

A mon grand regret, je ne peux pas joindre le fichier, je vais donc tenter d'être le plus explicite possible et de mettre quelques screens.

Le problème : je sais pas comment, en cliquant sur une image sur laquelle une macro est affecter, récupérer la position (Ligne colonne) de la dite image.

Actuellement mon tableau se présente comme cela :

image

Remarquez les vignettes à droite, celle ci font toutes référence à la même macro. De plus et histoire de compliquer un peu les choses, les lignes sont duplicable à l'infini et quand j'ajoute une ligne à mon tableau elle est en fait inséré par une macro à la ligne 5 (avec une nouvelle vignette qui se met en face).

Le même phénomène si je supprime une ligne : c'est la ligne 5 qui est supprimée.

Ce que j'essaie de faire : je veux que lorsque j'appuie sur la vignette placé sur la ligne 7, récupéré dans le code le numéro de la ligne 7, de même pour la 8 etc...

C'est simple en théorie, mais en pratique, mais je me retrouve confronté à une limite : une fois le code lancé via n'importe quel vignette, il est impossible de récupérer soit la position d'où le code est partie, j'ai tenter Récupérer la position du dernier clic (possible si ça avait été dans une cellule, mais une image...).

J'ai d'autres idées mais je préfère les éviter tant que faire ce peux :

1. Créer un nouveau code unique pour chaque image, mais cela alourdirait trop le fichier arriver à 10k lignes +

2. Demander à l'utilisateur de sélectionner une ligne à la mano (ce qui est contre productif, le but c'est d'automatiser)

J'espère avoir été suffisamment clair, si vous avez des idées n'hésitez pas, je prend tout :)

Cdt

Bonjour Kenact,

Pour cela il serait bon que les vignettes portent un nom différent. Est ce le cas?

C'est à dire que lors de leur création, elle prenne un nom incrémenté comme vignet001, vignet002 etc...

Bonjour à tous,

C'est simple :

Sub Clic()
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
End Sub

On peut avoir l'adresse complète avec un

.TopLeftCell.Address

Pierre

Hello XCellus, elles porte en effet un nom différent, c'est une bonne idée ! Mais il faudrait que le code sache reconnaître sur laquelle je clique pour l'identifier, et je n'ai pas trouvé comment faire.

OHH MON DIEU PIEREP56 ! Je ne connaissais pas du tout et mes recherches ne m'ont jamais mené à ce résultat. J'ai essayé et ça marche excellemment bien, grand merci tu résolus mon problème qui n'était quand même pas si simple ! ^^ Fallait la connaître cette commande :p

En tout cas, merci à tous les deux d'avoir pris le temps de me lire et de chercher des solutions et bien sûr merci Pierrep56 pour la solution. Le sujet est clos .

Kenact.

A nouveau,

@Kenact, vu que tes images portent un nom différent Application.Caller peut s'appliquer car cela ciblera la bonne image.

Donc on peut obtenir ses propriétés, notamment de positionnement.

@Pierre, dans le cas ou les images portent le même nom et sur la même macro, Application.Caller ciblera la plus ancienne. La première placée sur la feuille.

Donc si elle est en ligne 1000 et que le clic se fait sur l'image en ligne 10. Ce sera la ligne 1000 qui ressortira et conduira à une erreur.

Bonjour à tous,

si tu veux mon avis, tu devrais oublier ce système et plutôt utiliser l'événement double-clic pour lancer ta macro.
Trop d'objets sur une feuille et excel perd les pédales. Trop pour excel ça peut être 10...
eric

@X Cellus merci pour ta précision quant aux limites de application.Caller, je serais vigilant.

@eriiic merci de ta mise en garde, je vais rester là dessus pour le moment et envisagerais une solution comme par exemple de limiter les objets aux première lignes du tableau.

Kenact, merci à tous pour vos interventions ! :)

Rechercher des sujets similaires à "recuperer position precise image cliquant dessus"