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 :

Zone de liste Sélection continue [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Zone de liste Sélection continue
    Bonjour les amis,

    Question toute simple.
    Y a-t-il une astuce pour automatiser la sélection de tous les items compris entre 2 bornes sélectionnées d'une zone de liste?
    Ceci à l'image, par exemple, d'une sélection de fichiers avec la touche Shift.

    Par avance, merci pour vos lumineuses lumières.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je pensais à un évènement DblClick ou KeyPress mais rien n'y fait
    (J'ai 1500 items)

    Du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim i As Long, n1 As Long, n2 As Long
     
    For i = 0 To Lbx_Agent.ListCount - 1
            If Lbx_Agent.Selected(i) = True Then n1 = i
    Next i
     
    For i = n1 + 1 To Lbx_Agent.ListCount - 1
            If Lbx_Agent.Selected(i) = True Then n2 = i
    Next i
     
    For i = n1 To n2
        Lbx_Agent.Selected(i) = True
    Next i

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Salut,

    On est bien sur une ListBox de type Activex?
    MultiSélect??

    Si oui, voici un début de piste :
    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
    Option Explicit
     
    Dim debut As Integer, Fin As Integer
     
    Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        debut = ListBox1.ListIndex
    End Sub
     
    Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim i As Integer, S As Integer
        Fin = ListBox1.ListIndex
        If Shift = 1 Then
            S = 1
            If debut > Fin Then S = S * (-1)
            For i = debut To Fin Step S
                ListBox1.Selected(i) = True
            Next
        End If
    End Sub

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Pijaku,

    Oui. Il s'agit d'un contrôle Listbox sur Userform

    Je regarde.
    Je te reviendrai ensuite

    Dans cette attente, merci à toi

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut à nouveau,



    Je n'avais pas intégré les évènements MouseUp et MouseDown

    Qui plus est, de par le nombre d'arguments possibles, plusieurs applications peuvent être envisagées

    Ici leur usage est d'autant plus utile que une fois la double sélection effectuée, la touche Shift réactivée, une troisième étend la sélection précédente.

    Au passage:
    1- Je ne trouve pas l'aide Microsoft bien claire à ce sujet, du moins à mon modeste niveau
    2 - Je n'ai jamais compris l'opportunité de la propriété MultiSelect pour une zone de liste. C'est bien sa spécificité, non?

    Passe une bonne soirée.

    Bonne soirée au Forum

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Une fois de plus, j'ai répondu trop vite hier.
    Microsoft y avait pensé.

    Pour obtenir le comportement souhaité (utilisation de Shift et/ou Ctrl), il faut régler la propriété MultiSelect sur fmMultiSelectExtended :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.MultiSelect = fmMultiSelectExtended
    Shift := sélection continue
    Ctrl := Multi sélection discontinue

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

Discussions similaires

  1. récupérer les valeurs d'une zone de liste à sélection multiple
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 09/07/2009, 21h19
  2. Réponses: 5
    Dernier message: 18/07/2008, 09h50
  3. Réponses: 2
    Dernier message: 06/06/2008, 16h18
  4. Zone de liste à sélection multiple
    Par matjonq dans le forum IHM
    Réponses: 2
    Dernier message: 08/04/2008, 04h52
  5. Zones de liste sélection
    Par Rikou31 dans le forum Access
    Réponses: 5
    Dernier message: 15/02/2007, 00h20

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