Monter ou descendre d'un élement dans une ListBox

Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Dernière intervention
6 mai 2010
- 3 avril 2004 à 03:58 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 14 janv. 2016 à 10:50
Bonjour à tous !!!!!!!!!!!!!!!!!
Je voudrai monter ou descendre d'un élement dans une ListBox c'est à dire ex:
Bordeau
Paris
Nice
Marseille

en fait je voudrais soit monter ou descendre d'une ligne
l'élement sélectionné c'est à dire par exemple sélectionner Nice et en appuyant sur le bouton monter il doit se retrouvé devant Paris .
ou si je clique sur le bouton descendre il doit se retrouver après marseille

TRES IMPORTANT !!! J'utilise visual basic .net

je vous remercie bcp de votre aide car ca fai 3 jour que je cherche merci merci merci merci merci merci!!!!!!!!
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
- 3 avril 2004 à 20:01
1
Merci
Salut,

En .NET je ne sais pas mais en vb6 si tu fais :

List1.ListIndex = List1.ListIndex + 1 pour descendre
et
List1.ListIndex = List1.ListIndex - 1 pour remonter

ça devrai marcher.

Bien sûr, il faut contrôler que listindex siot > 0 et < list1.listcount-1

Si ça peut t'aider...

Cordialement

CanisLupus

Merci cs_CanisLupus 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
- 4 avril 2004 à 09:16
1
Merci
Un listbox nommé ListBox1,
Un bouton nommé Command1
Un formulaire nommé Form1

Un clic sur la form pour charger la listbox et un clic sur le bouton pour déplacer l'élément sélectionné vers le haut. (Pour le bas, je te laisses faire, tu vas vite trouver)
*********************************

Private Sub CommandButton1_Click()
Dim s As String
Dim i As Integer
i = ListBox1.ListIndex
s = ListBox1.List(ListBox1.ListIndex) 'récupère l'élément sélectionné
ListBox1.RemoveItem i 'l'efface
If i <> 0 Then
ListBox1.AddItem s, i - 1
ListBox1.ListIndex = i - 1
End If
End Sub

Private Sub Form1_Click()
ListBox1.AddItem "tuiytiu"
ListBox1.AddItem "ghgffg"
ListBox1.AddItem "azaza"
ListBox1.AddItem "......."
ListBox1.AddItem "*******"
ListBox1.AddItem "°°°°°°°"

End Sub
**********************************

Manu

Merci econs 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
- 5 avril 2004 à 19:18
1
Merci
Pourquoi supprimer l'Item pour le recréer ensuite !!
En plus dans ton code, si le 1er item est sélectionner, tu le supprimes et après ... plus rien !!!
Private Sub CommandButton1_click()
Dim Buffer As String, Idx as Long

Idx = List1.ListIndex
If Idx >0 Then
  With List1
    Buffer = .List(Idx-1)
    .List(Idx-1) = .List(Idx)
    .List(Idx) = Buffer
  End With
End If


Christophe R.

Merci crenaud76 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Dernière intervention
6 mai 2010
- 3 avril 2004 à 23:36
0
Merci
Je te remercie bcp de ton aide mai je ne sais pas avec koi remplacé ListIndex (J'ai tout essayé)

je te remercie en tout cas
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
- 5 avril 2004 à 21:55
0
Merci
On peut même rajouter :

.Selected(Idx - 1) = True

pour permettre de remonter (ou descendre) l'item à chaque clic.

Cordialement

CanisLupus
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
- 6 avril 2004 à 09:35
0
Merci
Tout à fait mon p'tit loup !!

Christophe R.
Messages postés
2
Date d'inscription
mercredi 13 janvier 2016
Dernière intervention
10 mars 2018
- Modifié par schlumf68 le 13/01/2016 à 22:43
0
Merci
Bonsoir, voici mon code (visual studio m'affiche que l'exeption NullReferenceException n'a pas été géré. voir capture d'écran si ca fonctionne)
Public Class Form1
    Private Idx As Integer
    Public Property List1 As Object

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs)

    End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub VScrollBar1_Scroll(sender As Object, e As ScrollEventArgs)

    End Sub

    Private Sub HScrollBar1_Scroll(sender As Object, e As ScrollEventArgs)

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        End
    End Sub
    Private Sub CommandButton2_click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim Buffer As String, Idx As Long

        Idx = List1.Index
        If Idx > 0 Then
            With List1
                Buffer = .List(Idx - 1)
                .Selected(Idx - 1) = True
                .List(Idx - 1) = .List(Idx)
                .List(Idx) = Buffer
            End With
        End If
    End Sub



    Private Sub ListBox1_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

    End Sub
End Class
Messages postés
1702
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 14 janv. 2016 à 02:30
Bonjour
Tu te greffes sur un post de 2006 !
Il aurait été préférable que tu ouvres ton propre post !

Public Property List1 As Object
: cette ligne ne doit pas être là ! List1 est la listbox qui est posée sur la Form : c'est un contrôle et nom une variable Property de classe !.

de plus tu déclares 2 fois idx : une fois en public en haut de la Form comme un Integer et une fois dans le CommandButton2_click comme Long

De plus on évite d'utiliser End pour la fin d'un programme ! Pour fermer la form
Me.Close() 
suffit largement
Enlèves aussi toutes les Sub sans code à l'intérieur
Par exemple
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

End Sub


Enfin les codes précédents sont en VB6 alors que toi tu es en VB NET
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 14 janv. 2016 à 06:55
Bonjour (et un salut à vb95),
A vb95 :
- j'ai modifié ton message pour y remettre dans le bon ordre Integer et Long, que tu y avais inversés
- qu'est, sous VB.Net, la propriété Index d'une listbox (je ne la trouve pas sur MSDN) ?
Et même sous VB6, Index ne pourrait qu'être l'index d'un groupe de contrôles indexés List1(0), List1(1), List1(2) .... etc ...
- je n'y trouve pas non plus (dans MSDN VB.Net) de propriété Selected, ni de propriété List

Tout le code montré me semble avoir été écrit au hasard, sans même avoir consulté MSDN

EDIT : j'ajoute que de toutes les réponses VB6 données avant le squat de schlumf68, seule celle de cs_CanisLupus correspondait à la demande formulée par ludovicanceaux
Il me semble (je ne suis pas VB.Nettiste) que schlum68 devrait, sous VB.Net, s'intéresser à ce qu'est la propriété SelectedIndex d'une listbox
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 14 janv. 2016 à 09:42
0
Merci
Bonjour à tous,

petite recherche sur Google:

http://www.dreamincode.net/forums/topic/155775-move-items-up-and-down-in-listbox/

ce qui donne:

Public Class Form1
    ' http://www.dreamincode.net/forums/topic/155775-move-items-up-and-down-in-listbox/
    'Up
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If ListBox1.SelectedIndex > 0 Then
            Dim I = ListBox1.SelectedIndex - 1
            ListBox1.Items.Insert(I, ListBox1.SelectedItem)
            ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
            ListBox1.SelectedIndex = I
        End If
    End Sub
    'Down
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If ListBox1.SelectedIndex < ListBox1.Items.Count - 1 Then
            Dim I = ListBox1.SelectedIndex + 2
            ListBox1.Items.Insert(I, ListBox1.SelectedItem)
            ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
            ListBox1.SelectedIndex = I - 1
        End If
    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        For i = 1 To 100
            ListBox1.Items.Add(i.ToString)
        Next i
    End Sub
End Class

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 14 janv. 2016 à 10:50
Bonjour, Le Pivert,
pourquoi modifier l'ordre de la listbox ?
Si le m'en tiens à la dxemande originelle :
sous VB6, se serait pour descendre :
If List1.ListIndex < List1.ListCount - 1 Then List1.ListIndex = List1.ListIndex + 1

et pour monter :
If List1.ListIndex > 0 Then List1.ListIndex = List1.ListIndex - 1

Siç j'ai bien compris ce que je lis dans MSDN/VB.Net, cela devrait donner en VB.Net :
If List1.selectedIndex < List1.items.count - 1 Then List1.selectedIndex = List1.selectedIndex + 1
pour descendre et
If List1.selectedIndex > 0 Then List1.selectedIndex = List1.selectedIndex - 1

Je n'ai pas VB.Net pour tester mais parierais que cela suffit.

EDIT : Ah non ... TU as raison. Il veut également déplacer l'article. Mille excuses, donc.

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.