Private Sub Spin_SpinUp()
Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer
'Pour Monter
With Lv
For B = .ListItems.Count To 1 Step -1
If .ListItems(B).Selected = True Then
.ListItems(B).Checked = False
x = .SelectedItem.Index
If x = 1 Then
.SetFocus
.ListItems(x).Selected = True
Exit Sub
Else
x = x - 1
End If
With .ListItems(x)
Temp = .Text
.Text = Lv.ListItems(x + 1)
Lv.ListItems(x + 1).Text = Temp
Lv.ListItems(x).Checked = True
With .ListSubItems
Nb = .Count
ReDim T(1 To Nb)
For A = 1 To Nb
T(A) = .Item(A).Text
.Item(A).Text = Lv.ListItems(x + 1).ListSubItems(A).Text
Lv.ListItems(x + 1).ListSubItems(A).Text = T(A)
Next
End With
End With
End If
Next
If x = 0 Then Exit Sub
.SetFocus
.ListItems(x).Selected = True
End With
End Sub
Private Sub Spin_Spindown()
Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer
'Pour Descendre
With Lv
For B = 1 To .ListItems.Count
If .ListItems(B).Selected = True Then
.ListItems(B).Checked = False
x = .SelectedItem.Index
.ListItems(B).Selected = False
If x = .ListItems.Count Then
.SetFocus
.ListItems(x).Selected = True
Exit Sub
Else
x = x + 1
End If
With .ListItems(x)
Temp = .Text
.Text = Lv.ListItems(x - 1)
Lv.ListItems(x - 1).Text = Temp
Lv.ListItems(x).Checked = True
With .ListSubItems
Nb = .Count
ReDim T(1 To Nb)
For A = 1 To Nb
T(A) = .Item(A).Text
.Item(A).Text = Lv.ListItems(x - 1).ListSubItems(A).Text
Lv.ListItems(x - 1).ListSubItems(A).Text = T(A)
Next
End With
End With
End If
Next
If x = 0 Then Exit Sub
.SetFocus
.ListItems(x).Selected = True
End With
End Sub
Bonsoir Si...,
les codes que j'ai proposé me sont utiles parce-que j'ai repris l'exemple de Références -VBA Project. Peut-être, voir même inutiles pour ton fichier, vu que tu traites la gestion d'une autre façon. Voir fichier joint.
'pour descendre
.ListItems(x + 1).EnsureVisible
If .GetFirstVisible.Index = 100 Then Exit For
'pour monter
.ListItems(x - 1).EnsureVisible
If .GetFirstVisible.Index = 20 Then Exit For
Private Sub CommandButton5_Click() 'Précédent
Call IncrementListView(Increment:=1)
End Sub
Private Sub CommandButton4_Click() 'suivant
Call IncrementListView(Increment:=-1)
End Sub
Private Sub IncrementListView(Increment As Long)
On Error Resume Next
With Listview
.SetFocus
.ListItems(.SelectedItem.Index + Increment).Selected = True
.ListItems(.SelectedItem.Index).EnsureVisible
End With
End Sub