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
 

Lone-wolf

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

Bonsoir ChTi,

il faudrait adapter le formulaire par rapport aux résolutions d'écran. Je suis sur un portable et je ne peux déplacer le formulaire pour voir la partie du bas.

Très bonne soirée


Amicalement Lone-wolf :cool:
 

Si...

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

Re

Toujours pas de réponse à ma question ici !

C'est bien joli tout ça* mais ce contrôle pose plus de problèmes que prévu (la preuve).
Il suffit de changer la version d'Excel pour se retrouver face à eux.

Pour sélectionner une de ces lignes (haut, suivante, précédente, bas) c'est simple avec une toupie et 2 boutons mais pour aller à cette ligne c'est toute autre affaire** surtout quand la hauteur du contrôle ne permet pas de voir toutes les lignes (hauteur non programmée).

On peut compliquer la chose en déplaçant leslignes comme proposé.

* cela dépend pour qui
**en dehors de l'ascenseur et, au pis-aller, de la roulette de la souris aprè un clic (voir le fichier joint si cela vous dit).
 

Pièces jointes

  • Selection ligne Listview.xlsm
    26.9 KB · Affichages: 58

Lone-wolf

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

Bonjour Si...,

j'ai effectué un test avec ton fichier et modifier les codes des spinbutton avec les codes que j'ai proposé; et j'ai bien A23 qui remonte sans souci. À moins de ne pas avoir compris ta question.


Code:
Private Sub Spin_SpinUp()
 Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer
 'Pour Monter
With Lv
    For B = .ListItems.Count To 1 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
            With .ListItems(x)
                Temp = .Text
                .Text = Lv.ListItems(x + 1)
                Lv.ListItems(x + 1).Text = Temp
                Lv.ListItems(x).Checked = True
                With .ListSubItems
                    Nb = .Count
                    ReDim T(1 To Nb)
                    For A = 1 To Nb
                        T(A) = .Item(A).Text
                        .Item(A).Text = Lv.ListItems(x + 1).ListSubItems(A).Text
                        Lv.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 Spin_Spindown()
Dim T(), A As Integer, Nb As Integer, x As Long
Dim Temp As String, B As Integer

'Pour Descendre
With Lv
    For B = 1 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 = Lv.ListItems(x - 1)
                Lv.ListItems(x - 1).Text = Temp
                Lv.ListItems(x).Checked = True
                With .ListSubItems
                    Nb = .Count
                    ReDim T(1 To Nb)
                    For A = 1 To Nb
                        T(A) = .Item(A).Text
                        .Item(A).Text = Lv.ListItems(x - 1).ListSubItems(A).Text
                        Lv.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

A+ :cool:
 

Si...

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

Re

Dans mon exemple, c'est la sélection qui change (la ligne sélectionnée ne se change pas de place).
Avec ton code, c'est la ligne qui se déplace.
Ici aussi, arrivée au-delà de la hauteur du contrôle, on ne la voit plus ! Je me demande donc quel est l'intérêt de la chose avec des codes plus compliqués.

Vue ListView.jpg

D'où ma question concernant l'utilité de passer par un tel contrôle.
On peut gérer les saisies autrement. Ci-jonit un autre exemple d'approche (pas finalisé).
 

Pièces jointes

  • Gestion exemple 1.xlsm
    89 KB · Affichages: 48

Lone-wolf

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

Bonsoir Si...,

les codes que j'ai proposé me sont utiles parce-que j'ai repris l'exemple de Références -VBA Project. Peut-être, voir même inutiles pour ton fichier, vu que tu traite la gestion d'une autre façon. Voir fichier joint.

Soit sans crainte, les références sont celles listées dans la feuille cachée ("Data").



A+ :cool:
 

Pièces jointes

  • Références VBA.zip
    44.9 KB · Affichages: 22
  • Références VBA.zip
    44.9 KB · Affichages: 22

Si...

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

re

Bonsoir Si...,

les codes que j'ai proposé me sont utiles parce-que j'ai repris l'exemple de Références -VBA Project. Peut-être, voir même inutiles pour ton fichier, vu que tu traites la gestion d'une autre façon. Voir fichier joint.

Désolé mais je tenais seulement compte de la demande initiale et je ne connais pas ton fichier qui n'a pas le même fond que celui de dindin :eek:.
 

Lone-wolf

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

Bonjour Si...,

pour faire apparaître les items cachés il suffit de rajouter ceci au codes Toupie:


Code:
'pour descendre
             .ListItems(x + 1).EnsureVisible
        If .GetFirstVisible.Index =  100 Then Exit For

'pour monter
             .ListItems(x - 1).EnsureVisible
        If .GetFirstVisible.Index = 20 Then Exit For


A+ :cool:
 

grisan29

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

Bonsoir a vous tous

j'arrive un peu tard mais voici ce que j'utilise en cliquant sur chaque bouton la ligne de la listview monte ou descend
Code:
Private Sub CommandButton5_Click()  'Précédent
Call IncrementListView(Increment:=1)
End Sub

Private Sub CommandButton4_Click()  'suivant
Call IncrementListView(Increment:=-1)
End Sub

Private Sub IncrementListView(Increment As Long)
On Error Resume Next
With Listview
  .SetFocus
  .ListItems(.SelectedItem.Index + Increment).Selected = True
  .ListItems(.SelectedItem.Index).EnsureVisible
End With
End Sub

Pascal
 

Discussions similaires

Réponses
1
Affichages
515

Statistiques des forums

Discussions
312 765
Messages
2 091 899
Membres
105 093
dernier inscrit
jeremxl