position d'un rectangle

  • Initiateur de la discussion LaurentTBT
  • Date de début
L

LaurentTBT

Guest
Bonsoir à tous.

Je cherche à connaitre la position d'un shape (rectangle) une fois que l'utilisateur l'aura déplacé.
J'ai vu dans un sujet récent ceci:
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
Mais il est aussi précisé que cette ligne ne doit être exécutée qu'en cliquant sur l'objet. Or j'ai besoin que l'utilisateur puisse déplacer le rectangle.

Je ne sais pas si je suis suffisamment clair, alors je détaille un peu:
En fait, mon tableau représente une journée, chaque colonne représentant 5 minutes. Les rectangles symbolisent le personnel. L'utilisateur choisit de positionner le rectangle à l'heure qu'il veut.
Je veux alors savoir si le rectangle a été positionné le matin, l'après-midi ou le soir, et ce dès que l'utilisateur aura relâché la souris. Est-ce possible?

Merci d'avance.

Nb: j'ai déjà posé une question similaire il y a quelques semaines sur la possibilité de déclencher une procédure événementielle liée à un shape de type mouse-up, sans réponse satisfaisante malheureusement. Alors je commence à penser que je ne demande pas l'impossible...
 
L

LaurentTBT

Guest
Merci beaucoup. En creusant un peu, j'arriverai peut-être à mes fins.

Mon souci, avec ta méthode, c'est que le rectangle (au premier plan) peut être déplacé sur un autre objet shape qui symbolise une activité particulière (placé en arrière plan). Dans ce cas, je ne peux pas sélectionner la cellule cible qui est en dessous.

Mais merci encore, ta macro m'a permis de découvrir de nouvelles possibilités de VBA...
 
L

LaurentTBT

Guest
Les grands esprits se rencontrent: en fait, je vais créer un bouton à part qui lancera une macro qui refera tout le décompte des rectangles placés en différents endroits du tableau. Cela obligera l'utilisateur à faire une action supplémentaire, mais c'est déjà ça, et c'est bien plus simple. En tout cas, merci encore pour ton aide.

Sinon, je suis sur une autre idée:
Au lieu d'utiliser un rectangle, je vais utiliser un contrôle (type textbox) directement inséré sur ma feuille. L'avantage est que j'aurai alors accès à une procédure événementielle du type MouseUp.
Inconvénient: l'utilisateur doit pouvoir déplacer ce contrôle. Le classique glisser par click gauche maintenu n'est plus accéssible. Ta macro me sera alors sans doute utile!!!

Autre voie: je cherche à recréer cette fonction de glisser par appui maintenu click gauche ainsi:

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Left = TextBox1.Left + X
TextBox1.Top = TextBox1.Top + Y
End Sub

J'ai des petits problèmes de sauts, et des problèmes pour x ou Y<0 (déplacements à gauche ou en haut). Je vais peaufiner tout ça.
Je reposterai peut-être un sujet spécifique très bientôt!!!

A +.
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 010
dernier inscrit
Sys974