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

anto37_44
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Dernière intervention
11 juin 2007
- 6 juin 2007 à 11:16 - Dernière réponse : anto37_44
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Dernière intervention
11 juin 2007
- 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 

Votre réponse

4 réponses

Meilleure réponse
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 juin 2007 à 11:39
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Renfield
anto37_44
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Dernière intervention
11 juin 2007
- 6 juin 2007 à 11:52
0
Merci
Merci beaucoup Renfield
çà marche super bien
anto37_44
Commenter la réponse de anto37_44
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 juin 2007 à 12:01
0
Merci
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
Messages postés
48
Date d'inscription
mardi 3 avril 2007
Dernière intervention
11 juin 2007
- 6 juin 2007 à 12:05
0
Merci
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.