[VB6] récup élément d'une listbox

Bonjour,

J'ai une listbox list1 qui contient plusieurs éléments par exemple:

Société
Nom
Prénom
Adresse

J'ai créé un bouton à côté Command1ToDown dans une procédure Command1ToDown.click

Maintenant j'explique ce que je veux faire.

Je sélectionne par exemple Prenom, et je clique sur le bouton Command1ToDown et celui-ci dois prend la place de Adresse et vice versa, ce qui nous donne au final

Société
Nom
Adresse
Prénom

Maintenant pour le code j'ai pensé à quelque chose comme

if command1ToDown.selected(i) = true then
command1ToDown.selected(i) = Var1
command1ToDown.selected(i+1) = Var2
command1ToDown.selected(i) = Var2
command1ToDown.selected(i+1) = Var1
end if

Le problème c'est que ca ne fonctionne pas.

Merci d'avance
Configuration: Windows XP
Firefox 2.0.0.3

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Ton code est très bizarre.

    command1ToDown d'après ce que tu dis c'est le bouton, faut donc que tu agisses sur la liste et non sur le bouton.
    En fait tu retournes sur la feuille qui contient ta frame. Ensuite tu double-cliques sur le bouton. Tu arrives dans une procédure qui sera appelée lorsque l'événement clique se fera sur le bouton. Ensuite tu échanges les éléments dans list1.
    1. oops, pardon

      en effet, il faut remplacer les command1ToDown par list1

      en faite c'est la procédure qui s'appelle Command1ToDown

      Private Sub Command1ToDown_Click()

      Donc maintenant je n'obtiens pas d'erreur, mais je n'observe pas de modification au moment où je clique sur le bouton
    2. Contributeur
      Tu as écris quoi dans la procédure Private sub command1ToDown_click() ??
    3. @fiddyPrivate Sub Command1ToDown_Click()
      Dim i As Long
      For i = 0 To List2.ListCount - 1
      If List2.Selected(i) = True Then
      List2.Selected(i) = Var1
      List2.Selected(i + 1) = Var2
      List2.Selected(i) = Var2
      List2.Selected(i + 1) = Var1
      End If
      Next i
      End Sub
  2. Contributeur
    Normal que ça ne marche pas.
    Mets plutot dans ta procédure command1ToDown_click():

    tmpIndex=List1.SelectedIndex
    tmpItem = List1.SelectedItem
    list1.Insert.RemoveAt(tmpIndex)
    list1.Items.Insert((tmpIndex+1) mod list1.Items.Count, tmpItem)

    ps : je suis pas sûr que cela marche, j'ai pas testé.
    j'ai mis un mod pour modulo histoire que si c'est le dernier élément, il repassera en première position. A toi de voir
    1. Okay merci pour ton code, j'ai compris ton raisonnement, je vais essayer de l'adapter.