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 :

ListView et molette souris


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut ListView et molette souris
    Par défaut, la molette de la souris fait défiler les éléments de la listview, sans changer d'élément sélectionné.

    Je cherche à ce que la molette incrémente (ou décrémente selon le sens de rotation) l'élément sélectionné de la listwiew.

    J'y arrive, en utilisant diverses fonctions API dont mouse_event mais, inconvénient, les évènements ListView1_KeyDown ou ListView1_KeyPress ne fonctionnent pas (j'aimerai pourvoir utiliser les touches HOME, END pour sélectionner le début ou la fin de la liste).

    Peut-être connaissez-vous un remède à cet inconvénient, peut-être qu'il y a plus simple.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je n'ai pas essayé, mais est-ce que tu ne peux pas utiliser "OnKey" pour programmer les touches à l'affichage de la listview ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Par défaut
    Bonjour,
    A la lecture de ton code il est "normal" que les évènements ListView1_KeyDown et ListView1_KeyPress ne fonctionnent pas, puisque le focus est redirigé en permanence sur CommandButton1.
    Pour pouvoir utiliser ces 2 évènements depuis ListView1 il faut rediriger le focus sur lui. Ou bien les gérer depuis CommandButton1.

    C'est la deuxième solution que j'ai retenue pour te proposer ce bout de code.
    Au passage tu verras que j'ai quelque peu simplifié la procédure de coloriage, pour éviter les lignes répétitives.

    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
    Private Sub ColoringItem(ByVal xItem As Integer)
      Dim i As Integer
      ListView1.ListItems(xItem).ForeColor = vbMagenta
      ListView1.ListItems(xItem).EnsureVisible
      ListView1.ListItems(itemsélectionné).ForeColor = vbBlack
      For i = 1 To ListView1.ListItems(1).ListSubItems.Count
        ListView1.ListItems(xItem).ListSubItems(i).ForeColor = vbMagenta
        ListView1.ListItems(itemsélectionné).ListSubItems(i).ForeColor = vbBlack
      Next
      itemsélectionné = xItem
    End Sub
     
    Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If listviewenvue = False Then Exit Sub
    Dim i As Integer
    If KeyCode = vbKeyHome And itemsélectionné > 1 Then
      ColoringItem xItem:=1
    ElseIf KeyCode = vbKeyEnd And itemsélectionné < ListView1.ListItems.Count Then
      ColoringItem xItem:=ListView1.ListItems.Count
    ElseIf KeyCode = vbKeyPageUp And itemsélectionné > 1 Then
      If itemsélectionné - 20 >= 1 Then ColoringItem xItem:=itemsélectionné - 20
    ElseIf KeyCode = vbKeyPageDown And itemsélectionné < ListView1.ListItems.Count Then
      If itemsélectionné + 20 <= ListView1.ListItems.Count Then ColoringItem itemsélectionné + 20
    End If
    Me.Repaint
    End Sub

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut résolu
    Merci à tous les 2 de votre sollicitude, en particulier à Kitty01560 dont la solution fonctionne.

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

Discussions similaires

  1. Désactiver molette souris Access 2003
    Par Thierry'' dans le forum Access
    Réponses: 7
    Dernier message: 21/11/2012, 17h53
  2. erreur code pour désactiver molette souris.
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 27/09/2005, 10h14
  3. Molette souris et liste déroulante
    Par Maludi dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2005, 06h42
  4. Capturer la molette souris en plein écran
    Par Marekh dans le forum DirectX
    Réponses: 3
    Dernier message: 07/06/2005, 14h20
  5. Molette souris et DBCtrlGrid
    Par TieumB dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/09/2004, 12h16

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