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 survole souris [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Employer
    Inscrit en
    Juillet 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employer
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 33
    Par défaut Listview et survole souris
    Bonjour à tous,
    J'ai chercher, et je ne trouve pas. Et donc j'ai besoin d'aide.
    J'ai un listview qui est affiché en mode icone (ListView1.View = lvwIcon).
    Lorsque j'initialise le listview au chargement de ma form, tout se passe bien.
    Mais maintenant, je voudrai récupérez l'item qui est survolé par la souris.

    Pour ce faire, j'ai essayer cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As stdole.OLE_XPOS_PIXELS, ByVal Y As stdole.OLE_YPOS_PIXELS)
        Dim ListeItem As ListItem
        If Button = 0 Then
            Set ListeItem = ListView1.HitTest(X, Y)
            If Not ListeItem Is Nothing Then
                Debug.Print (ListeItem.Text)
            End If
        End If
    End Sub
    Mais cela m'affiche toujours le premier élément qui se trouve en haut à gauche.

    Avez-vous une idée pour m'aider?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) le contrôle listview n'est pas un composant natif de VBA/Excel. Il n'est d'ailleurs pas traité dans l'aide interne VBA
    Tu devrais éviter de rendre ton classeur dépendant d'un tel composant.
    2) le code que tu montres implique que la souris survole la toute première colonne
    3) j'observe que les paramètres x et y de l'évènement semblent être exprimés en pixels. Il y a alors peut-être une conversion d'échelle d'unités à faire.
    4) et surtout : je ne comprends pas à quoi peut bien te servir ce code dans l'évènement MouseMove (aucun intérêt)
    l'utilisation de la propriété Hitext d'une listview n'a d'intérêt que dans un évènement de type Drag and Drop.

  3. #3
    Membre averti
    Homme Profil pro
    Employer
    Inscrit en
    Juillet 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employer
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 33
    Par défaut
    Merci d'avoir répondu,

    Citation Envoyé par unparia Voir le message
    1) le contrôle listview n'est pas un composant natif de VBA/Excel. Il n'est d'ailleurs pas traité dans l'aide interne VBA
    Tu devrais éviter de rendre ton classeur dépendant d'un tel composant.[/U].
    J'ignorais ce détail, cependant j'utilise ce composant qui me semble bien plus pratique et plus paramétrable qu'une listbox, et qui à toujours bien fonctionné chez tout les utilisateurs qui utilise mes petits développements. La ListView me permet d’afficher une vue d'ensemble de centaine de pictogrammes. Si il n'était qu'en simple liste, cela impliquerai un nombre bien inférieur d'affichage simultané de picto qu'en un mode icon.

    Citation Envoyé par unparia Voir le message
    2) le code que tu montres implique que la souris survole la toute première colonne
    [/U].
    J'affiche la ListView qu'en mode icône, ce qui est bien plus simple pour l'utilisateur de voire les pictos. Donc dans se mode il n'y a pas vraiment de colonne, ou alors elle sont bien cachée (je parle graphiquement, je sais qu'il y en a quand même, j'utilise la 2ème colonne pour y mettre le descriptif du picto). Le survole m'affiche le premier picto en haut à gauche, qu'elle que soit l'endroit du survol, je bien commence le survole en bas à droite, le résultat est toujours le même.

    Citation Envoyé par unparia Voir le message
    3) j'observe que les paramètres x et y de l'évènement semblent être exprimés en pixels. Il y a alors peut-être une conversion d'échelle d'unités à faire.[/U].
    Effectivement, c'est bien en pixel. Cependant je suis dans un userform, pas sur la feuille Excel. La finalité du code est de faire une mise en forme dans la feuille, et avec cela, j'ai du prendre en compte les différente unité de mesure utilisé. C'est pas simple, mais je commence à bien comprendre le sujet. Pour en revenir à la ListView, il est bien en pixel, et l’évent me retourne un X et un Y correspondant bien à l'endroit du curseur de la souris. Les coordonnées sont donné par rapport au coin supérieur droite de la ListView, et non pas par rapport au formulaire.

    Citation Envoyé par unparia Voir le message
    4) et surtout : je ne comprends pas à quoi peut bien te servir ce code dans l'évènement MouseMove (aucun intérêt)
    l'utilisation de la propriété Hitext d'une listview n'a d'intérêt que dans un évènement de type Drag and Drop.
    Le but est d'affiché une infobulle qui en fonction du picto survolé, recherche d'autre information dans une table. Ce qui permettra à l'utilisateur de voir tout de suite si c'est bien le picto recherché. Pour ce qui est du Drag and Drop, j'ai aussi codé quelque chose, mais sans utilisé l'évent MouseMove, ni le HitTest. J'ai défini une variables source accessible dans tout le module et avec l’évent OLEStartDrag je la remplie, puis avec l’évent OLEDragDrop j'ai la destination. Source et destination, j'ai qu'a finir le traitement.

    Voilà j’espère trouver un solution sans avoir a passé par un click sur le picto. Des solutions de contournement du problème j'y ai déjà réfléchis, et j'ai bien quelque idée, cependant pour mon apprentissage (et un peut de fierté personnel quand même), j'aimerais vraiment savoir pourquoi cela ne fonctionne pas comme je l'imaginais.

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

Discussions similaires

  1. Changement de couleur sur survol souris
    Par Sami Xite dans le forum Powerpoint
    Réponses: 4
    Dernier message: 10/09/2007, 15h45
  2. Réponses: 2
    Dernier message: 21/10/2006, 20h58
  3. surimpression d'images par survol souris
    Par zebra3 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/09/2006, 10h17
  4. Rajout d'une ligne à l'aide contextuelle survol souris
    Par patrick24 dans le forum Langage
    Réponses: 3
    Dernier message: 28/12/2005, 11h13
  5. Réponses: 3
    Dernier message: 13/10/2005, 11h31

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