déplacer une ligne dans listbox et garder le focus sur ligne sélectionnée

fid

XLDnaute Nouveau
bonjour le forum,

j'ai trouvé dans les tutoriels comment :
dans une listbox nommée : ListBoxArtDes
qui contient 6 colonnes
en cliquant sur le bouton : BHaut
remonter une ligne au rang supérieur

mon problème est que une fois la ligne déplacée, la sélection reste sur la ligne initiale
or ce que je veux, c'est garder la sélection sur la ligne déplacée, afin de pouvoir cliquer plusieurs fois sur le bouton et remonter la ligne au fur et à mesure dans la listbox

je n'arrive pas à trouver comment procéder, cela ne doit pas être sorcier, mais je ne suis pas assez calée en code pour y parvenir seule

voici le code du bouton :

Code:
Private Sub BHaut_Click()
Dim temp(5)
With ListBoxArtDes
For n = 0 To 5
temp(n) = .List(.ListIndex, n)
.List(.ListIndex, n) = .List(.ListIndex - 1, n)
.List(.ListIndex - 1, n) = temp(n)
Next n
End With
End Sub

quelqu'un peut il me dire ce qu'il faut rajouter pour toujours garder la ligne déplacée sélectionnée ?
d'avanc merci
 

fid

XLDnaute Nouveau
Re : déplacer une ligne dans listbox et garder le focus sur ligne sélectionnée

désolée, mais cela ne fait rien du tout, cela ne déplace pas la ligne vers le haut contrairement au code initial
avec l'autre code je remonte bien la ligne au rang précédent, mais la sélection ne reste pas sur cette ligne sélectionnée
ainsi
rang 4
remonte au rang 3
mais la sélection reste sur le rang 4
or je voudrais que la sélection reste sur le rang 3, c'est-à-dire le rang "remonté"
???
A+
 

Si...

XLDnaute Barbatruc
Re : déplacer une ligne dans listbox et garder le focus sur ligne sélectionnée

salut

et ainSi... ?
Code:
Private Sub BHaut_Click()
  With ListBoxArtDes
    If .ListIndex = 0 Then Exit Sub
    Dim temp(5), a As Byte
    a = .ListIndex - 1
    For n = 0 To 1
       temp(n) = .List(.ListIndex, n)
       .List(.ListIndex, n) = .List(.ListIndex - 1, n)
       .List(.ListIndex - 1, n) = temp(n)
    Next
    .ListIndex = a
  End With
End Sub

l'item sélectionné reste le même indépendamment de la couleur !
 

fid

XLDnaute Nouveau
Re : déplacer une ligne dans listbox et garder le focus sur ligne sélectionnée

Bonsoir et merci à tous les 2 pour votre aide

c'est formidable tout fonctionne correctement
j'ai fait un petit classeur exemple, ceci pouvant servir je pense à d'autres utilisateurs du forum :

voici le code :
Private Sub BBas_Click()
With ListBoxArtDes
If .ListIndex = 0 Then Exit Sub
Dim temp(2), a As Byte
a = .ListIndex + 1
For n = 0 To 1
temp(n) = .List(.ListIndex, n)
.List(.ListIndex, n) = .List(.ListIndex + 1, n)
.List(.ListIndex + 1, n) = temp(n)
Next
.ListIndex = a
End With
End Sub
Private Sub BHaut_Click()
With ListBoxArtDes
If .ListIndex = 0 Then Exit Sub
Dim temp(2), a As Byte
a = .ListIndex - 1
For n = 0 To 1
temp(n) = .List(.ListIndex, n)
.List(.ListIndex, n) = .List(.ListIndex - 1, n)
.List(.ListIndex - 1, n) = temp(n)
Next
.ListIndex = a
End With
End Sub
Private Sub UserForm_Initialize()
Dim ListArtDes As Range
With Sheets("articles")
Set ListArtDes = .Range("A1:F" & .Cells(Rows.Count, "A").End(xlUp).Row)
End With
ListBoxArtDes.List = ListArtDes.Value
End Sub

voici le lien pour télécharger le fichier modèle : http://cjoint.com/?BKbtOHuFURH

encore merci pour votre aide
c'est super ce forum !
bonne soirée à tous
 

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 144
Membres
111 051
dernier inscrit
MANUREVALAND