IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Défilement dans listview [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut Défilement dans listview
    Bonjour à tous

    dans un userform comportant un contrôle listview est-il possible de remplacer l'ascenseur vertical de la listview par deux boutons "suivant" et "précédent" ?

    je suppose que oui mais je ne vois pas comment incrémenter la ligne suivante/précédente par rapport à la ligne "active"
    Avez vous une idée ?
    cordialement

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Salut,

    Essaye ça (je pense avoir mieux en stock, mais ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView1.SelectedItem = ListView1.ListItems(ListView1.SelectedItem.Index + 1)
    ListView1.DropHighlight = ListView1.SelectedItem
    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut
    Merci Quentin

    je teste cela ce soir et te fais un retour

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Une piste avec l'exemple joint.

    1) Construisez un UserForm1 avec un ListView1, un CommandButton1 et un CommandButton2
    2) Copiez le code suivant dans la fenêtre de code du UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Private Sub CommandButton1_Click()  'Précédent
    Call IncrementListView(Increment:=-1)
    End Sub
     
    Private Sub CommandButton2_Click()  'Suivant
    Call IncrementListView(Increment:=1)
    End Sub
     
    Private Sub ListView1_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
      Case Is = 8 'Touche H
        Call IncrementListView(Increment:=-1)
      Case Is = 2 'Touche B
        Call IncrementListView(Increment:=1)
    End Select
    End Sub
     
    Private Sub UserForm_Initialize()
    With ListView1
      With .ColumnHeaders
        .Clear
        .Add , , "Titre 1", 60, lvwColumnLeft
        .Add , , "Titre 2", 60, 2
        .Add , , "Titre 3", 60, 2
        .Add , , "Titre 4", 60, 2
        .Add , , "Titre 5", 50, 2
        .Add , , "Titre 6", 50, 2
        .Add , , "Titre 7", 60, 2
        .Add , , "Titre 8", 60, 2
      End With
      .View = lvwReport
      .FullRowSelect = False
      .FlatScrollBar = True
    End With
    Call ChargeListView
    End Sub
     
    '********************
    Private Sub ChargeListView()
    Dim S As Worksheet
    Dim var
    Dim i&
    Dim j&
    Dim k&
    Dim cpt&
    Dim T()
    '---
    '#########################################
    '### Nom de feuille et plage à adapter ###
    Set S = Sheets("BDD")
    var = S.Range("A2:H" & S.[a65536].End(xlUp).Row)
    '#########################################
    For i& = 1 To UBound(var, 1)
      For j& = 1 To UBound(var, 2)
        cpt& = cpt& + 1
        ReDim Preserve T(1 To 8, 1 To cpt&)
        For k& = 1 To UBound(var, 2)
          T(k&, cpt&) = var(i&, k&)
        Next k&
        Exit For
      Next j&
    Next i&
    If cpt& = 0 Then
      ListView1.ListItems.Clear
      Exit Sub
    End If
    With ListView1
      .ListItems.Clear
      .View = lvwReport
      .FullRowSelect = True
      .Gridlines = True
      For i& = 1 To UBound(T, 2)
        .ListItems.Add , , T(1, i&)
          For j& = 2 To UBound(T, 1)
            .ListItems(.ListItems.Count).ListSubItems.Add , , T(j&, i&)
          Next j&
      Next i&
    End With
    End Sub
     
    Private Sub IncrementListView(Increment As Long)
    On Error Resume Next
    With ListView1
      .SetFocus
      .ListItems(.SelectedItem.Index + Increment).Selected = True
      .ListItems(.SelectedItem.Index).EnsureVisible
    End With
    End Sub
    L'incrémentation est par pas de 1 et se fait par :
    - en cliquant sur les CommandButtons
    - en maintenant la touche Ctrl H ou Ctrl B selon le sens désiré

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut
    bonjour à tous

    merci PMO2017, ta proposition est très intéressante et fonctionne très bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le curseur de défilement dans ma ListView ne fonctionne pas au scroll
    Par souissi_haythem dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 09/05/2012, 09h37
  2. [FLASH MX] scrollbar et défilement dans flash
    Par Mout85 dans le forum Flash
    Réponses: 6
    Dernier message: 08/10/2008, 15h01
  3. barre de défilement dans un JPanel
    Par Atharendil dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/01/2006, 12h27
  4. Ajouter une colonne (par du code) dans Listview
    Par __fabrice dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2005, 17h39
  5. Mettre une barre de défilement dans une CheckListBox ?
    Par Invité dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/07/2005, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo