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 :

Listbox (selection multiple), conserver la sélection


Sujet :

Macros et VBA Excel

  1. #21
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 170
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 170
    Points : 1 717
    Points
    1 717
    Par défaut
    J'ai posé la question sur ExpertExchange également, et leur réponse est sans appel:

    Par design, il n'est pas possible de modifier le comportement standard d'un contrôle, les évènements générés par ce dernier permettent au plus de l'enrichir.
    La seule solution envisageable est d'écrire son propre composant COM avec ses contraintes (installation, enregistrement ect ...) ce qui, dans la plus part des entreprises, est soumis à restriction.

    Bref, plus qu'a faire avec, et négocier avec mon client.

  2. #22
    Membre du Club
    Homme Profil pro
    libre
    Inscrit en
    Mai 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Mai 2024
    Messages : 26
    Points : 53
    Points
    53
    Par défaut
    Tu as essayé une listview qui corresponde à la liste des dossiers et permet la multiselection

    https://silkyroad.developpez.com/VBA/ListView/

  3. #23
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 170
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 170
    Points : 1 717
    Points
    1 717
    Par défaut
    Merci pour la suggestion, mais ...

    D'une part, le contrôle ListView n'est pas un contrôle standard (livré de base avec MS Office).
    Si j'y avait accès (ou plutôt: si mon client y avait accès), je l'aurais joyeusement utilisé.

  4. #24
    Membre régulier
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 38
    Points : 73
    Points
    73
    Par défaut re
    Bonsoir
    juste pour plaisanter
    Nom : demo.gif
Affichages : 54
Taille : 102,1 Ko
    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
    Private Sub UserForm_Activate()
        ListBox1.List = Evaluate("row(1:15)")
    End Sub
     
    Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        ListBox1.Enabled = False
        Image1.Move ListBox1.Left, ListBox1.Top, ListBox1.Width, ListBox1.Height
    End Sub
     
     
    Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       Static q&
       Static q2&
     With Image1
            If Button = 1 Then
                If q = -1 Then
                    q = Int(Y / (.Height / ListBox1.ListCount)): If q > ListBox1.ListCount - 1 Then q = ListBox1.ListCount - 1
               q2 = q
               Else
                    q2 = Int(Y / (.Height / ListBox1.ListCount)): If q2 > ListBox1.ListCount - 1 Then q2 = ListBox1.ListCount - 1
                End If
            Else
                q = -1
                q2 = -1
            End If
            If Button = 1 Then
                If q < q2 Then a = q: b = q2 Else a = q2: b = q
                For i = a To b
                    ListBox1.Selected(i) = True
                Next
             Me.Caption = q & "  " & q2
      End If
            Me.Caption = q & "  " & q2
        End With
    End Sub
     
     
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Image1.Move ListBox1.Left + ListBox1.Width, ListBox1.Top, 10, 10
    ListBox1.Enabled = True
    End Sub

  5. #25
    Membre du Club
    Homme Profil pro
    libre
    Inscrit en
    Mai 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Mai 2024
    Messages : 26
    Points : 53
    Points
    53
    Par défaut
    Il est possible de placer une bande latérale de même longueur que la liste sur laquelle les opérations de sélections s'effectuent via les evenements de la souris car il semble impossible d'exploiter et intercepter ceux de la liste qio sont une partie du problème

  6. #26
    Membre régulier
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 38
    Points : 73
    Points
    73
    Par défaut re
    Bonjour
    c'est exactement ce que je fait dans mon message précédent

  7. #27
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 170
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 170
    Points : 1 717
    Points
    1 717
    Par défaut
    Si j'ai bien compris, cette solution se base sur une frame invisible de même hauteur que la listbox, pour calculer la hauteur d'un item.

    Ca pose plusieurs soucis, qui faussent les calculs:
    - Etre sur que la listbox sera dépourvue d'ascenseur, donc exit le nombre d'items supérieur à ce que la listbox peut afficher.
    - Etre sur que le nombre d'items soit égale au maximum d'items affichables.

    Et malheureusement, on ne peut toujours pas désélectionner un item avec un click gauche (comportement standard).
    Bref, on a pas vraiment fait avancer le schmilblick.

  8. #28
    Membre du Club
    Homme Profil pro
    libre
    Inscrit en
    Mai 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Mai 2024
    Messages : 26
    Points : 53
    Points
    53
    Par défaut
    c'est exactement ce que je fait dans mon message précédent
    Oui c'est ce que j'ai pu comprendre de votre code et il y aussi une partie que j'ai pas bien saisie dans l’interférence du fonctionnement de la liste dans l'utilisation de Enabled

    Si j'ai bien compris, cette solution se base sur une frame invisible de même hauteur que la listbox, pour calculer la hauteur d'un item.
    Il y a la propriété TopIndex qui indique le déplacement actuel par rapport le début de la liste il suffit d'ajouter cette distance pour savoir l'index exacte de l'élément sélectionné, le problème ne réside pas là mais le défi est comment détecter le changement dans la taille du texte par exemple qui pourrait affecté la hauteur des éléments.

    dans fichier suivant un petit test, le code n'implémente rien concernant la multiselection mais un bon début pour le faire loin des evenements de la listebox ingérable
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [listbox] Sélection multiple
    Par chris78200 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 06/04/2012, 16h35
  2. listbox selection multiple VB
    Par jcl49 dans le forum VB.NET
    Réponses: 11
    Dernier message: 19/05/2011, 09h51
  3. ListBox, selection multiple
    Par Arnard dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 13/05/2011, 14h18
  4. ListBox Sélection multiple
    Par yonpo dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/12/2010, 19h02
  5. récupérer valeur listbox selection multiple
    Par titou624 dans le forum C#
    Réponses: 9
    Dernier message: 18/05/2010, 09h09

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