Bonjour à tous,
Cela faisait un moment que je n'avais pas posté, mais là j'ai un problème qui m'a pourtant l'air idiot :
J'ai une listbox et je souhaite me déplacer avec les flèches de direction (haut et bas uniquement).
Aucun problème pour les déplacements simples, par contre, lorsque je suis en haut de la liste et que l'utilisateur utilise la flèche du haut, cela doit sélectionner le dernier élément de la liste (et inversement avec la flèche du bas pour le dernier élément).
J'ai donc le code suivant (construction de la liste comprise, mon userform est très simple, il ne contient que la listbox. La listbox contient les 26 lettres de l'alphabet) :
Le soucis, c'est que lorsque j'appuie sur la flèche du haut par exemple, quand je suis au premier élément de la liste, c'est que cela sélectionnes l'avant-dernier élément (et quand j'utilise la flèche du bas depuis le dernier, j'arrive au deuxième élément).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Option Explicit Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) With Me.ListBox1 If KeyCode = 40 Then ''''''Flèche bas If .ListIndex = .ListCount - 1 Then .ListIndex = 0 'Si élément sélectionné est le dernier alors sélectionner le premier ElseIf KeyCode = 38 Then ''''''Flèche haut If .ListIndex = 0 Then .ListIndex = .ListCount - 1 'Si élément sélectionné est le premier alors sélectionner le dernier End If End With End Sub Private Sub UserForm_Initialize() Dim sh As Worksheet Dim i As Long Set sh = ThisWorkbook.Sheets(1) With Me.ListBox1 .Clear For i = 1 To sh.Range("A" & Rows.Count).End(xlUp).Row .AddItem (sh.Cells(i, 1).Value) Next i End With End Sub
Je pense avoir saisi pourquoi : le déplacement par les flèches n'est effectué qu'une fois la sélection de l'élément faite, ce qui provoque un double déplacement.
Ma question est donc : comment puis résoudre cela? Ou si vous avez une solution pour passer du premier au dernier et inversement, avec seulement la flèche du haut et celle du bas.
J'espère avoir été clair, merci d'avance !
Partager