Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion dindin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 😎
 
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

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+ 😎
 
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.



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

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+ 😎
 

Pièces jointes

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

re


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 😱.
 
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+ 😎
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
260
Réponses
10
Affichages
968
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…