1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| Option Explicit
Dim ObjList As msforms.ListBox
Dim IndexB&
Private Sub UserForm_Activate()
'POUR L'EXEMPLE JE REMPLI MA LISTBOX1 AVE UN TABLEAU STRUCTURE(3 colonnes
ListBox1.List = Range("Tableau1").Value
End Sub
' ***************EVENTS POUR LES LISTBOX *****************************
'LISTBOX1
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox_MouseMove ListBox1, Button, Shift, X, Y
End Sub
Private Sub ListBox1_BeforeDragOver(ByVal Cancel As msforms.ReturnBoolean, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
Cancel = True: Effect = 2
End Sub
Private Sub ListBox1_BeforeDropOrPaste(ByVal Cancel As msforms.ReturnBoolean, ByVal Action As Long, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
ListBox_BeforeDropOrPaste ListBox1, Cancel, Action, Data, X, Y, Effect, Shift
End Sub
'LISTBOX2
Private Sub ListBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox_MouseMove ListBox2, Button, Shift, X, Y
End Sub
Private Sub ListBox2_BeforeDragOver(ByVal Cancel As msforms.ReturnBoolean, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
Cancel = True: Effect = 2
End Sub
Private Sub ListBox2_BeforeDropOrPaste(ByVal Cancel As msforms.ReturnBoolean, ByVal Action As Long, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
ListBox_BeforeDropOrPaste ListBox2, Cancel, Action, Data, X, Y, Effect, Shift
End Sub
'LISTBOX3
Private Sub ListBox3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox_MouseMove ListBox3, Button, Shift, X, Y
End Sub
Private Sub ListBox3_BeforeDragOver(ByVal Cancel As msforms.ReturnBoolean, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
Cancel = True: Effect = 2
End Sub
Private Sub ListBox3_BeforeDropOrPaste(ByVal Cancel As msforms.ReturnBoolean, ByVal Action As Long, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
ListBox_BeforeDropOrPaste ListBox3, Cancel, Action, Data, X, Y, Effect, Shift
End Sub
'LISTBOX4
Private Sub ListBox4_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox_MouseMove ListBox4, Button, Shift, X, Y
End Sub
Private Sub ListBox4_BeforeDragOver(ByVal Cancel As msforms.ReturnBoolean, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
Cancel = True: Effect = 2
End Sub
Private Sub ListBox4_BeforeDropOrPaste(ByVal Cancel As msforms.ReturnBoolean, ByVal Action As Long, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
ListBox_BeforeDropOrPaste ListBox4, Cancel, Action, Data, X, Y, Effect, Shift
End Sub
' EVENTS COMMUN
Private Sub ListBox_MouseMove(ByVal LstBox As msforms.ListBox, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Effect As Integer, DataObj As DataObject
If Button = 1 Then
IndexB = LstBox.ListIndex
Set ObjList = LstBox: Set DataObj = New DataObject: Effect = DataObj.StartDrag
End If
End Sub
'*******************************************************************************************
Private Sub ListBox_BeforeDropOrPaste(ByVal LstBox As msforms.ListBox, ByVal Cancel As msforms.ReturnBoolean, ByVal Action As Long, ByVal Data As msforms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As msforms.ReturnEffect, ByVal Shift As Integer)
Dim C%
If ObjList.Name <> LstBox.Name Then
With LstBox
.AddItem
For C = 0 To .ColumnCount - 1: .List(.ListCount - 1, C) = ObjList.List(IndexB, C): Next
End With
With ObjList: .RemoveItem .ListIndex: .ListIndex = -1: End With
End If
End Sub |
Partager