Bonjour tout le monde,
J'aimerais savoir s'il y a plusieurs façon ou astuce de gérer les interaction clic droit/clic gauche, je m'explique car je suis déjà tombé sur ce problème plusieurs fois:
Pour faire simple par exemple je voulais faire que quand on clic gauche de la souris sur une case, elle se remplie avec "Dossier complet" et lancer une macro X et avec un clic droit "Dossier en cours" qui lance un macro Y.
J'utilisais donc un
Worksheet_BeforeRightClick
pour détecter le clic droit et comme cela n'existe pas pour le clic gauche, il y a que le
Worksheet_SelectionChange
Bon j'imagine que vous voyez le problème arriver car le BeforeRightClick active en premier le SelectionChange qui du coup lance la macro X avant la macro Y et ça ne m'arrange pas du tout !
J'ai trouvé une solution sur internet :
'The declaration tells VBA where to find and how to call the API
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If KeyPressed(vbKeyRButton) = True Then Exit Sub
End Sub
'The function returns whether a key is pressed or not
Public Function KeyPressed(ByVal Key As Long) As Boolean
KeyPressed = CBool((GetAsyncKeyState(Key) And &H8000) = &H8000)
End Function
Je ne comprends pas ce que la fonction KeyPressed fait clairement mais cela à l'air de fonctionner, on est obligé de passer par une API ou il y a d'autre solution possible?car je ne suis pas du tout au fait de l'utilisation de ces API user32, cela peut poser des soucis sur certains windows? ou selon la version d'excel? ou pas plus de soucis que ça comme n'importe quelle macro VBA? ou au contraire c'est plus fiable que les macros fait par des utilisateurs ^^
Merci d'avance de vos retour
Tonton Nico
Partager