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] - sélectionner une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut [Listview] - sélectionner une cellule
    Bonsoir,

    Je me prends la tête depuis hier sur un cas qui est peut-êre très con pour vous...

    Je cherche à copier dans le clipboard la cellule sélectionnée d'une listeview.
    Jusqu'à maintenant, je n'ai réussi qu'à avoir l'index de l'item sélectionné qui correspond en réalité au numéro de la ligne de la listeview dans laquelle, l'utilisateur a clické.

    Je ne sais pas comment faire pour récupérer l'index de la colonne pour avoir ainsi les coordonnées de la cellule sélectionnée et pouvoir prendre l'item ou le sous item sélectionné...

    Auriez vous une idée svp ? Je sèche un peu là (beaucoup)...


    Je vous remercie d'avance,


    Cdt,

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour CoriS FrosT,

    Ce document devrait t'aider http://silkyroad.developpez.com/VBA/ListView/

    Cordialement.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut
    Merci pour ta réponse gF =)

    Je connais bien ce lien ^^
    Je viens poser la question ici parce que justement, la doc de sylk ne m'apporte pas la réponse.

    Cependant, je pense que j'ai un début de solution possible qui consisterait à faire un truc assez sioux...

    Il me faut pour l'instant améliorer mon algorithme pour bien gérer les cas et pouvoir récupérer la coordonnée de la colonne clickée et c'est bon. L'index de l'item sélectionné nous donne déjà la coordonnée de la ligne donc pas de souci...

    Dès que j'aurais testé ça et que c'est ok, je viendrai poster ma solution pour ceux que ça intéresse et qui, comme moi, sont à la recherche d'une façon pour récupérer le subitem sélectionné... Vu que visiblement, il n'y a aucune méthode ou propriété actuelle pour ça.


    Merci =)

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut
    Voilà ma solution qui n'est pas parfaite...

    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
     
    Private Sub ListView_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
    Dim I As Long, CX As Long
    Dim T As Integer
     
    CX = 0
    T = 16
     
    For I = 1 To ListView.ColumnHeaders.Count
      CX = CX + ListView.ColumnHeaders(I).Width + (T * I)
      If CX > x Then
        'code...
        Exit For
      End If
    Next
    End Sub
    Comme vous pouvez le constater, n'ayant pas de propriété ou méthode permettant d'avoir l'index de la colonne de la cellule sélectionnée de ma listview. Je passe par un moyen assez sioux pour y parvenir, à savoir le calcul de distance grâce aux coordonnées de la souris au sein de ma listview et les largeurs cumulées des colonnes...

    Elle n'est malheureusement pas parfaite à cause de deux choses :
    - la première est que les coordonnées X et la largeur des colonnes ne sont visiblement pas exprimés avec la même échelle...
    Par exemple, si je click sur la première colonne, très proche de la deuxième colonne, X vaut 82, une valeur qui est plus grande que la largeur de ma première colonne qui est de 72, ce qui a donc pour effet (à tort), de faire croire que c'est la deuxième colonne que l'on a sélectionnée...
    C'est pour cela que j'introduis une valeur T qui peut être assimilée à une tolérance...

    - le deuxième point très ennuyeux est que cela ne fonctionne plus dès lors que l'on a un horizontal scrollbar... En effet, lorsque l'on déplace le scroll, les coordonnées de la souris X semblent perdues et sortent une valeur qui n'a pas de sens...

    Ce qu'il faudrait, c'est pouvoir, détecter le nombre de pixel décalé avec le scrolling horizontal et le cumuler au CX...


    Voilà ma solution actuelle, qui n'est pas parfaite.

    Si vous avez des idées, je suis preneur...

    Et pour ceux qui ont des listes figées sans scrolling, c'est ok... C'est déjà ça =)

    Si vous avez également des idées concernant une amélioration de la tolérance des coordonnées, je suis également preneur... La valeur actuelle est une valeur empirique et ne se base sur aucune propriété...


    Bon weekend, vais voir s'il y a des infos sur les coordonnées de souris au sein des userforms (je pense que j'ai loupé des trucs ^^)

Discussions similaires

  1. sélectionner une cellule d'un TStringgrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 12/02/2010, 20h00
  2. Sélectionner une cellule avec une variable
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2008, 18h05
  3. [2.0 DataGridView] comment sélectionner une cellule par le code
    Par juniorAl dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/07/2008, 19h46
  4. [TStringGrid] Comment sélectionner une cellule ?
    Par zidenne dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/11/2005, 10h45
  5. [JTable] Sélectionner une cellule
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 12/10/2005, 15h57

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