Problème Spinbutton + Listbox

gusgus13

XLDnaute Nouveau
Bonjour à tous!

J'ai recherché pas mal sur le net et ai trouvé un code qui au départ semblait correspondre à mes attentes. Mais après plusieurs tests je me suis aperçue qu'il y avait un bug!

Alors je m'explique :

Dans un userform, j'ai une listbox remplie via une feuille EXCEL.
A côté j'ai inséré un Spinbutton pour me permettre de déplacer comme je le souhaite les items soit vers le haut soit vers le bas grâce aux flèches de ce fameux Spinbutton.

Le système marche à peu près, mais je me suis aperçue que lorsque je sélectionne dans ma listbox un élément et que j'effectue les actions suivantes (toujours avec le même item, attention!) :

-> Clic continu sur la flèche "Haut" du Spinbutton pour aller jusqu'en première position de la listbox
->Clic continu sur la flèche "Bas" du Spinbutton pour aller jusqu'en dernière position de la listbox
-> Clic continu sur la flèche "Haut" du Spinbutton pour aller jusqu'en première position de la listbox

Et bien le nom de mon item change pour avoir le même nom que l'item qui été premier avant lui et qui s'est alors retrouvé en seconde position.

J'ai le même problème si on effectue les actions dans l'autre sens "Bas-Haut-Bas"

Je vous ai mis un fichier joint pour mieux comprendre, car ce n'est pas très facile à l'expliquer à l'écrit!

Si quelqu'un peut m'aider ce serait vraiment sympa de votre part!

Merci à vous et bonne journée =)
 

Pièces jointes

  • TEST FORUM 1.xls
    92 KB · Affichages: 50
G

Guest

Guest
Re : Problème Spinbutton + Listbox

Bonjour,

Avec ceci cela devrait fonctionner.
Le on error resume next cachait une erreur qui faisait perdre les pédales au décompte.
J'ai employé ici une autre technique, un peu plus rapide.

Code:
'---------------------- Descente de l'item sélectionné dans Listbox1----------------------------------
Private Sub SpinButton1_SpinDown()
    If ListBox1.ListIndex = ListBox1.ListCount - 1 Then Exit Sub
    Dim Num As Integer, xTmp As String
    Dim T As Variant
    With ListBox1
        Num = .ListIndex
        T = .List
        xTmp = T(Num, 0)
        T(Num, 0) = T(Num + 1, 0)
        T(Num + 1, 0) = xTmp
        .List = T
        .Selected(Num + 1) = True
    End With
End Sub
'---------------------- Montée de l'item sélectionné dans Listbox1----------------------------------
Private Sub SpinButton1_SpinUp()
    If ListBox1.ListIndex < 1 Then Exit Sub
    Dim Num As Integer, xTmp As String
    Dim T As Variant
    With ListBox1
        Num = .ListIndex
        T = .List
        xTmp = T(Num, 0)
        T(Num, 0) = T(Num - 1, 0)
        T(Num - 1, 0) = xTmp
        .List = T
        .Selected(Num - 1) = True
    End With
End Sub

A+
 

Statistiques des forums

Discussions
312 767
Messages
2 091 920
Membres
105 104
dernier inscrit
jct