On m'a demandé de coder la possibilité de cliquer sur une image dans Excel et d'y ajouter une forme (c'est un schéma corporel pour un physiothérapeute, la forme indiquera le site de la douleur du patient). Mon code fait ce OK en utilisant la souris vers le bas cas d'un contrôle d'image ActiveX:Moment de l'événement de la souris en panne
Private Sub bodypic_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
ClickShape x, y
End Sub
Sub ClickShape(x As Single, y As Single)
Dim shp As Shape
Dim cursor As Point
Set shp = ActiveSheet.Shapes.AddShape(msoShapeMathMultiply, x + ActiveSheet.Shapes("bodypic").Left, _
y + ActiveSheet.Shapes("bodypic").Top, 26, 26)
With shp.Fill
.ForeColor.RGB = RGB(255, 0, 0)
.BackColor.RGB = RGB(255, 0, 0)
End With
shp.Line.Visible = False
End Sub
Le problème est que lorsque le curseur de la souris est sur le diagramme de la forme ne soit pas visible. Ce n'est que lorsque la souris est déplacée du diagramme que la forme apparaît.
J'ai essayé various methods pour actualiser l'écran, sélectionner une cellule, même changer la position du curseur via le SetCursor method in Lib user32. Rien ne semble fonctionner sauf pour l'utilisateur qui déplace réellement la souris. Pour recréer le problème: insérez un contrôle d'image ActiveX d'environ 200 x 500 px, ajoutez une image jpeg au contrôle, ajoutez le code de la souris à la feuille de calcul et le code de forme de clic à un module.
Au lieu de mousedown, vous ne pouvez pas utiliser l'événement click? Même chose mais le plus probable résoudra le problème. –
MouseDown est l'événement 'click' – Absinthe
Lol je voulais littéralement dire l'évènement "_Click()". –