Click ou double-click
Lorsque l'on tente d'utiliser ces deux événements d'un même objet, on constate que le double-click produit également un simple click.
Suite des événements lors d'un double-click:
MouseDown -> MouseUp -> Click -> DblClick -> MouseUp -> Click
Il faut donc choisir l'un des deux, mais pas les deux. Car en plus de ce fonctionnement particulier, on aura des difficultés à éviter la confusion, car selon le paramètrage de chaque PC, faire la différence entre le simple et double click peut apporter une difficulté supplémentaire.
Comment alors disposer de "click" différents ?
Nous allons tout simplement détecter le fait que l'utilisateur appuie ou non sur la touche "Shift" (majuscule) pour faire son click.
Pour cela, nous déclarons la variable boShift en haut des modules, dans la partie déclarative.
Option Compare Database Option Explicit ' Dim boShift As Boolean
Ensuite, nous détectons l'appui sur cette touche dans l'évenement "Sur touche appuyée" au niveau du formulaire.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) boShift = (Shift = 1) End Sub
et nous annulons lors du relachement de la touche...
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) boShift = False End Sub
Considérons que nous traitons une zone de liste, nous mettrons dans l'événement "Sur click":
Private Sub Liste0_Click() If Not boShift Then MsgBox "Simple clic" Else MsgBox "Click avec Shift" End If boShift = False End Sub
Bien sûr, il ne faudra pas oublier de configurer l'apercu des touches à "Oui" dans les propriétés dudit formulaire.