'ici on capte le message de la souris et selon le messgae on appelle la sub scroller qui gère toute les sorte de control
Sub MouseWheelOut(control As Object, Optional pilote As Object = Nothing)
Const WHEEL_DELTA = 120&, WM_MOUSEWHEEL = &H20A, PM_NOREMOVE = &H0&
Dim tMsg As Msg, lDelta As Integer, criter As Boolean, A
Dim PosControl As IAccessible
criter = IsScrollable(control) 'on controle si on est bon pour scroller (permet de pouvoir atteindre le dropbutton de la combo)
If Not criter Or bLooping Then Exit Sub
If Not TypeOf control Is UserForm Then
If TypeName(control.Parent) = "Worksheet" Then
ActiveSheet.ScrollArea = control.TopLeftCell.Offset(1).Address 'bloque le scrollarea de la feuille a la cellule la plus proche du control( EVITE LES PETITS SURSAUTS)
control.Height = control.Height + 10: control.Height = control.Height - 10
End If
End If
Do
criter = IsScrollable(control)
If Not criter Then
bLooping = False
If Not TypeOf control Is UserForm Then If TypeName(control.Parent) = "Worksheet" Then ActiveSheet.ScrollArea = "" 'debloque le scrollarea de la feuille
If Not TypeOf control Is UserForm Then If TypeName(control.Parent) = "Worksheet" Then control.TopLeftCell.Offset(1).Select 'la selection provoque le replis de la combo
Exit Sub
End If
bLooping = True
Call WaitMessage
If PeekMessage(tMsg, NULL_PTR, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_NOREMOVE) Then
lDelta = HiWord(tMsg.wParam)
Scroller lDelta, control, pilote
End If 'End of PeekMessage
DoEvents
Loop While criter
End Sub