Script FlècheHaut et FlècheBas

Roudoudoulove Messages postés 1 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 1 mars 2006 - 1 mars 2006 à 11:23
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 1 mars 2006 à 14:33
Bonjour,

en fait je cherche les scripts qui permettent:

- de monter un élément lorsque l'on clique sur un bouton (FlècheHaut);
- de descendre un élément lorsque l'on clique sur un bouton (FlècheBas).

Par exemple, j'ai une liste de 5 noms et je voudrais remonter celui qui est en 3ème position pour le mettre en 2nde position. Et pareil pour le bouton descendre.

Merci d'avance.

2 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 mars 2006 à 11:53
Salut,

Essaie de voir si ce petit bout de code peut t aider:

- Place dans un form un listbox et appelle la List1
- Rempli la listBox avec les valeurs que tu veux
- Selectionne un element de la liste et appuie sur les fleches haut ou bas.

Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp:
If List1.ListIndex > 0 Then Call DeplaceElement(True, List1.ListIndex)
Case vbKeyDown:
If List1.ListIndex < List1.ListCount - 1 Then Call DeplaceElement(False, List1.ListIndex)
End Select
KeyCode = 0


End Sub


Private Sub DeplaceElement(VersLeHaut As Boolean, ItemIndex As Integer)
Dim i As Integer
Dim tmpVal As String
Dim Elem() As String
Dim NewItemIndex As Integer
'Sauvegarde des valeurs de la liste
ReDim Elem(0 To List1.ListCount - 1)
For i = 0 To List1.ListCount - 1
Elem(i) = List1.List(i)
Next
'Remet dans l'ordre souhaite
If VersLeHaut Then
NewItemIndex = ItemIndex - 1
tmpVal = Elem(ItemIndex - 1)
Elem(ItemIndex - 1) = Elem(ItemIndex)
Elem(ItemIndex) = tmpVal
Else
NewItemIndex = ItemIndex + 1
tmpVal = Elem(ItemIndex + 1)
Elem(ItemIndex + 1) = Elem(ItemIndex)
Elem(ItemIndex) = tmpVal
End If
'Remplissage de la liste avec les nouvelles valeurs
Call List1.Clear


For i = 0 To UBound(Elem)
Call List1.AddItem(Elem(i))
Next


List1.ListIndex = NewItemIndex


End Sub

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
1 mars 2006 à 14:33
Bonjour,

Pour faire remonter



Private Sub cmdUp_Click()

On Error Resume Next

Dim nItem As Integer

With List1

If .ListIndex < 0 Then Exit Sub

nItem = .ListIndex

.AddItem .Text, nItem - 1

.RemoveItem nItem + 1

.Selected(nItem - 1) = True

End With

End Sub



Pour faire descendre.



Private Sub cmdDown_Click()

On Error Resume Next

Dim nItem As Integer

With List1

If .ListIndex < 0 Then Exit Sub

nItem = .ListIndex

If nItem = .ListCount - 1 Then Exit Sub

.AddItem .Text, nItem + 2

.RemoveItem nItem

.Selected(nItem + 1) = True

End With

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
Rejoignez-nous