Modifier l'ordre des lignes dans une listbox [Résolu]

anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 6 juin 2007 à 11:16 - Dernière réponse : anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention
- 6 juin 2007 à 12:05
Bonjour à tous
J'ai encore besion de votre aide (qui jusque là m'a été trés précieuse).

J'ai une listbox dans la laquelle je voudrais pouvoir changer l'ordre des messages.
J'arrive à deplacer une ligne avec ce code:
Private Sub Comman_Click()
i = List2.ListIndex
chaine = List2.Text
j = List2.ListIndex - 1       '- pour monter, + pour descendre'
List2.RemoveItem (i)
Call List2.AddItem(chaine, j)
List2.Refresh
List2.Selected(j) = True
End Sub
Ce que j'aimerais c'est pouvoir monter/descendre plusieurs lignes d'un coup.
Si je selectionne plusieurs lignes et que je monte/descend avec ce code, y'en à qu'une qui monte/descend

Si qu'un a une idée sur le code à taper je le remerci par avance
anto37_44
Afficher la suite 

4 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 6 juin 2007 à 11:39
+3
Utile
Considérant que tes boutons Up et Down sont dans un groupe de controles
0=> UP
1 => DOWN

CcBtnMove(0)  => Bouton Monter
CcBtnMove(1)  => Bouton Descendre
CcLst  => La fameuse ListBox

tu peux faire :

Private Sub CcBtnMove_Click(Index As Integer)
Dim sBuffer As String
Dim i As Long
Dim nStart As Long
Dim nStop As Long
Dim nStep As Long

   If Index Then
       nStart = CcLst.ListCount - 1
       nStep = -1
   Else
       nStop = CcLst.ListCount - 1
       nStep = 1
   End If

   For i = nStart To nStop Step nStep
       If CcLst.Selected(i) Then
           sBuffer = CcLst.List(i)
           CcLst.RemoveItem i
           If Index And i < CcLst.ListCount Then
               If Not CcLst.Selected(i) Then
                   i = i + 1
               End If
           ElseIf Index = 0 And i > 0 Then
               If Not CcLst.Selected(i - 1) Then
                   i = i - 1
               End If
           End If
           CcLst.AddItem sBuffer, i
           CcLst.Selected(i) = True
       End If
   Next i
End Sub , ----
By Renfield

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 6 juin 2007 à 11:52
0
Utile
Merci beaucoup Renfield
çà marche super bien
anto37_44
Commenter la réponse de anto37_44
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 6 juin 2007 à 12:01
0
Utile
Je venais tout jsute de coder cette fonction pour mno soft, au boulot...

les coïncidences....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 6 juin 2007 à 12:05
0
Utile
Bonne coïncidence pour moi parce que moi aussi c'est pour le boulot mais moi je n'y arrivais pas.

anto37_44
Commenter la réponse de anto37_44

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.