code pour se déplacer entre éléments list view

dindin

XLDnaute Occasionnel
Bonjour
j'arrive pas à trouver 4 code boutons pour se déplacer entre les éléments d'une listview.
Premier /suivant /précèdent/dernier .
Esst ce que qq un peut il m'aider .
Merci d'avance
 

gilbert_RGI

XLDnaute Barbatruc
Re : code pour se déplacer entre éléments list view

Bonjour,

mettre un petit fichier exemple

à défaut

VB:
Private Sub CommandButton1_Click()
On Error Resume Next
Me.listbox1.ListIndex = Me.listbox1.ListIndex - 1
End Sub

Private Sub CommandButton2_Click()
On Error Resume Next
Me.listbox1.ListIndex = Me.listbox1.ListIndex + 1
End Sub


salutations
 
Dernière édition:

13GIBE59

XLDnaute Accro
Re : code pour se déplacer entre éléments list view

Bonjour tout le monde,

Même en changeant dans le code de gilbert ListBox1 par ListView1, ça ne marche pas.
Cela dit, pour le précédent et suivant, on a les flèches haut et bas qui marchent, ça suffit pas ?

JB
 

dindin

XLDnaute Occasionnel
Re : code pour se déplacer entre éléments list view

je sais que ca marche avec les fleches haut et bas .
comme c est une base de 500 elements , il est plus pratique d utiliser les boutons premier dernier.
je vais attendre un peu, si qq un pourra m aider ...
merci
 

13GIBE59

XLDnaute Accro
Re : code pour se déplacer entre éléments list view

Pour le dernier :

Private Sub CommandButton12_Click()
With ListView1.ListItems(ListView1.ListItems.Count)
.Selected = True
.EnsureVisible
End With
End Sub

En fait la dernière ligne devient visible, mais pas sélectionnée...

Tape "sélectionner ligne dans listview", il y a des tas de réponses sur ExcelDownload. Pas encore eu le temps de les voir toutes...

JB
 

13GIBE59

XLDnaute Accro
Re : code pour se déplacer entre éléments list view

Bonjour Dindin,

Voilà les codes que tu cherches :

Private Sub cmdPremier_Click()
Dim N As Integer
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Selected = True Then
ListView1.SelectedItem.Selected = False
ListView1.HideSelection = True
Set ListView1.SelectedItem = Nothing
Else
End If
Next
ListView1.ListItems(1).EnsureVisible
ListView1.ListItems(1).Selected = True
ListView1.SetFocus
End Sub


Private Sub cmdDernier_Click()
Dim N As Integer
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Selected = True Then
ListView1.SelectedItem.Selected = False
ListView1.HideSelection = True
Set ListView1.SelectedItem = Nothing
Else
End If
Next
N = ListView1.ListItems(ListView1.ListItems.Count)
ListView1.ListItems(N).EnsureVisible
ListView1.ListItems(N).Selected = True
ListView1.SetFocus
End Sub


Private Sub cmdPrecedent_Click()
If ListView1.SelectedItem.Index = 1 Then
Set ListView1.DropHighlight = ListView1.SelectedItem
Else
If ListView1.SelectedItem.Index = ListView1.ListItems.Count Then
Set ListView1.SelectedItem = ListView1.ListItems(ListView1.SelectedItem.Index - 1)
Set ListView1.DropHighlight = ListView1.SelectedItem
Else
Set ListView1.SelectedItem = ListView1.ListItems(ListView1.SelectedItem.Index - 1)
Set ListView1.DropHighlight = ListView1.SelectedItem
End If
End If
End Sub



Private Sub cmdSuivant_Click()
If Me.ListView1.SelectedItem.Index = Me.ListView1.ListItems.Count Then
Set Me.ListView1.SelectedItem = Me.ListView1.ListItems(ListView1.ListItems.Count)
Set Me.ListView1.DropHighlight = Me.ListView1.SelectedItem
Else
Set Me.ListView1.SelectedItem = Me.ListView1.ListItems(ListView1.SelectedItem.Inde x + 1)
Set Me.ListView1.DropHighlight = Me.ListView1.SelectedItem
End If
End Sub

Ne me remercie pas, je vais t'expliquer :
Sans être spécialiste des listviews, je les aime bien, et j'ai plus ou moins cherché
une solution à ta demande. En vain.
J'ai donc fait appel à RENAUDER, inscrit sur le site mais absent de celui-ci depuis longtemps, RENAUDER étant mon maître-gourou- en vba (je tiens tout de lui, et je le salue ici),
sachant qu'il m'a bien dépatouillé sur mon fichier comptes.

Bref, je lui ai demandé, il a trouvé ça assez vite dans ses archives vb6...génial pour lui.

Le seul hic est que dans la sélection du premier ou du dernier, il n'arrive pas à "déselectionner" l'item précédent.

Bon courage.

JB
 

Paf

XLDnaute Barbatruc
Re : code pour se déplacer entre éléments list view

Bonjour dindin, gilbert_RGI, 13GIBE59

après quelques essais:

sélectionner le premier:

Code:
Private Sub CommandButton1_Click()
 With ListView1
  .ListItems(1).Selected = True
  .SetFocus
 End With
End Sub

sélectionner le dernier:

Code:
Private Sub CommandButton2_Click()
 With ListView1
  .ListItems(.ListItems.Count).Selected = True
 .SetFocus
 End With
End Sub


pour suivant et précédent, j'ai utilisé un SpinButton:

suivant:
Code:
Private Sub SpinButton1_SpinDown()
 Dim Ind
 Ind = ListView1.SelectedItem.Index
 ListView1.ListItems(Ind - 1).Selected = True
 ListView1.SetFocus
End Sub

précédent:
Code:
Private Sub SpinButton1_SpinUp()
 Dim Ind
 Ind = ListView1.SelectedItem.Index
 ListView1.ListItems(Ind + 1).Selected = True
 ListView1.SetFocus
End Sub

avec un gros soucis : la ligne est bien sélectionnée (msgbox N° index = OK), mais le surlignage n'est effectif qu'une ligne sur deux ?!

Je gratte

A+
 

dindin

XLDnaute Occasionnel
Re : code pour se déplacer entre éléments list view

merci à toutes les personnes qui ont participé à ce travail .
reste une seule chose . est ce que vous pouvez modifier les 4 codes pour qu'ils affichent les infos de chaque ligne sélectionné par les boutons automatiquement DANS LES TEXTBOX
merci d'avance .
 

Lone-wolf

XLDnaute Barbatruc
Re : code pour se déplacer entre éléments list view

Bonsoir à tous

une proposition touvée sur le net et qui devrait vous plaire. Un super BRAVO à l'auteur.


Code:
Private Sub CmdHaut_Click()
Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer
 'Pour Monter
With ListView1
    For B = .ListItems.Count To 9 Step -1
        If .ListItems(B).Selected = True Then
            .ListItems(B).Checked = False
            x = .SelectedItem.Index
            If x = 1 Then
                .SetFocus
                .ListItems(x).Selected = True
                Exit Sub
            Else
                x = x - 1
            End If
            If B = 9 Or .ListItems(B - 1).Checked = True Then: .ListItems(B).Checked = True: Exit Sub
            With .ListItems(x)
                Temp = .Text
                .Text = ListView1.ListItems(x + 1)
                ListView1.ListItems(x + 1).Text = Temp
                ListView1.ListItems(x).Checked = True
                With .ListSubItems
                    Nb = .Count
                    ReDim T(Nb To 1)
                    For A = 1 To Nb
                        T(A) = .Item(A).Text
                        .Item(A).Text = ListView1.ListItems(x + 1).ListSubItems(A).Text
                        ListView1.ListItems(x + 1).ListSubItems(A).Text = T(A)
                    Next
                End With
            End With
        End If
    Next
    If x = 0 Then Exit Sub
    .SetFocus
    .ListItems(x).Selected = True
 
End With
    End Sub

Private Sub CmdBas_Click()
Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer

'Pour Descendre
With ListView1
    For B = 9 To .ListItems.Count
        If .ListItems(B).Selected = True Then
                .ListItems(B).Checked = False
            x = .SelectedItem.Index
            .ListItems(B).Selected = False
            If x = .ListItems.Count Then
                .SetFocus
                .ListItems(x).Selected = True
                Exit Sub
            Else
                x = x + 1
            End If
            With .ListItems(x)
                Temp = .Text
                .Text = ListView1.ListItems(x - 1)
                ListView1.ListItems(x - 1).Text = Temp
                ListView1.ListItems(x).Checked = True
                With .ListSubItems
                    Nb = .Count
                    ReDim T(Nb To 1)
                    For A = 1 To Nb
                        T(A) = .Item(A).Text
                        .Item(A).Text = ListView1.ListItems(x - 1).ListSubItems(A).Text
                        ListView1.ListItems(x - 1).ListSubItems(A).Text = T(A)
                    Next
                End With
            End With
        End If
    Next
    If x = 0 Then Exit Sub
    .SetFocus
    .ListItems(x).Selected = True
End With
End Sub

NOTE : modifiez ReDim T(Nb To 1) par ReDim T(1 to Nb) si plusieures colonnes. Ensuite,Cliquez sur l'item que vous voulez déplacer et voyez le résultat.



A+ :cool:
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
496

Statistiques des forums

Discussions
312 679
Messages
2 090 858
Membres
104 677
dernier inscrit
soufiane12