Déplacement d'un objet shape dans feuille excel

Description

A l'occasion d'un programme, j'ai eu besoin de déplacer en cours d'exécution un objet shape dans une feuille Excel.
Il n'y a pas d'évènements Mouse pour une feuille Excel, il faut donc suivre le curseur avec une fonction API.
Mais le pb, c'est que les coordonnées du curseur sont par rapport à l'écran entier, et non pas la zone de la feuille de calcul active...
Il m'a donc fallu trouver un moyen de trouver les coordonnées de la feuille par rapport à l'écran, et cela qq soit la résolution ou l'état de la fenêtre active (plein écran, en-têtes lignes et colonnes, etc).
Mes recherches sur le web n'ont conduit à rien, si ce n'est un constat d'échec.
J'ai enfin trouvé un moyen de résoudre ce pb en utilisant un userform provisoire positionné sur la 1ère cellule, et une API me donnant les coordonnées écran du rectangle associé à la form...
Il restait à établir une relation entre les pixels et les points pour associer les coordonnées du curseur (en pixels) avec celles de la shape (en points)!
Tout cela est expliqué dans le code.
L'exemple est avec une zone de texte, mais n'importe quelle autre shape (image, figure géométrique créée avec les outils dessins de Excel, etc) peut être utilisée.

Source / Exemple :


Voir zip

Conclusion :


Il peut paraitre inutile de déplacer un objet shape dans une feuille Excel, car on peut en effet le faire en le sélectionnant et en le bougeant avec la souris.
Cependant, en le faisant par programmation, on a accès à toutes les propriétés de l'objet que l'on peut donc mémoriser ou modifier (sa position par ex).
Il est évident que l'on peut remplacer le timer API par mon timer VBA (cf ma source correspondante), mais je n'ai pas voulu l'imposer et rester dans le cas général de Excel...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.