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] Interaction entre 2 listboxes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut [listbox] Interaction entre 2 listboxes
    Bonjour.

    Grand débutant (j'en suis encore à enregistrer mes macros !), j'utilise pour la première fois les listbox de la boite à outils. C'est pour dire...

    D'abord, merci à tous les contributeurs. Sincèrement.

    Voici mon souci :
    J'ai un classseur dont la 1re feuille ("Selection") contient 2 listbox, à sélection multiple (multiselect), et dont la première ligne correspond à "Tous". Le contenu des listbox sert à générer des valeurs puis faire un tri avec les valeurs sélectionnées, et ça ça marche.

    Mon problème : la 1re ligne (Tous) est sélectionnée par défaut. Lorsque je sélectionne des éléments de la listbox "lb_metier", les valeurs de la listbox "lb_societe" doivent toutes être désélectionnées, sauf la valeur "Tous" (index = 0). Et vice-versa.

    Voici le peu de code que j'ai pondu, pour qu'au moins en cliquant dans l'une des listbox (lb_metier par exemple), l'autre (lb_societe) voie tous ses éléments désélectionnés :

    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
    Private Sub lb_metier_Click()
    
    Dim lb_metier As Object
    Dim lb_societe As Object
    Dim j As Byte
    
    With Sheets("Selection")
    
        For j = 0 To .lb_societe.ListCount - 1               ' Décompte sur les éléments de lb_societe
            .lb_societe.Selected(0) = True                   ' hormis le ***Tous***
            .lb_societe.Selected(j) = False                  ' aucun élément n'est sélectionné
        Next j
        
    End With
    End Sub
    
    
    Private Sub lb_societe_Click()
    
    Dim lb_metier As Object
    Dim j As Byte
    
    With Sheets("Selection")
    
        For j = 0 To .lb_metier.ListCount - 1               ' Décompte sur les éléments de lb_metier
            .lb_metier.Selected(0) = True                   ' hormis le ***Tous***
            .lb_metier.Selected(j) = False                  ' aucun élément n'est sélectionné
        Next j
    
    End With
    End Sub
    Qui peut m'aider à corriger ma syntaxe foireuse ??
    D'avance, merci.

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    D'abord ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub lb_metier_Click()
     
    Dim lb_metier As Object
    Dim lb_societe As Object
    Dim j As Byte
    Pourquoi nommes-tu des variables du même nom que des objets qui existent déjà ? (C'est pas une bonne idée, ça!)

    Dim j As Byte... pour gérer les indices d'une liste... Ces indices sont des Integer. En utilisant un Byte, il n'y aura pas de problème mais ce serait mieux d'utiliser le même type que pour la propriété de l'objet.

    Ensuite, et si j'ai bien compris, si tu veux que lorsque tu sélectionne le premier item de ta liste ("Tous") tous les autres items soient désélectionnés, il faut faire un test (If... then... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Sheets("Selection")
     
        If .lb_societe.Selected(0) Then
            For j = 0 To .lb_societe.ListCount - 1    
                .lb_societe.Selected(j) = False  
            Next j
        End If
     
    End With
    Je m'arrête ici. Au cas où je n'aurais pas compris ce que tu veux faire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut
    Zazaraignee : merci beaucoup !! Grâce à toi ça fonctionne comme il se doit.

    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
    Private Sub lb_metier_GotFocus()
    Dim i As Integer
    
    With Sheets("Selection")
    
            For i = 0 To .lb_societe.ListCount - 1    'Pour chaque élément de la liste lb_société
                .lb_societe.Selected(i) = False       'Pour désélection de l'élément
            Next i
            .lb_societe.Selected(0) = True            'l'élément Tous est maintenant sélectionné
            .lb_metier.Selected(0) = False            ' et désélectionné dans la liste lb_metier
            
    End With
    End Sub
    ----------------------------------------------------------
    Private Sub lb_societe_GotFocus()
    Dim i As Integer
    
    With Sheets("Selection")
            For i = 0 To .lb_metier.ListCount - 1
                .lb_metier.Selected(i) = False
            Next i
            .lb_metier.Selected(0) = True
            .lb_societe.Selected(0) = False
    End With
    End Sub
    Comme il se doit... sauf qu'il y a encore un point que me chiffonne :
    J'aimerais qu'en sélectionnant l'item "Tous" d'une liste, tous les éléments de la même liste soient désélectionnés. Comment faire ? La douzaine de tests déjà effectués n'ont pas été concluants, et l'évènement 'Got_focus' est maintenant déjà pris, alors...

Discussions similaires

  1. Interaction entre 2 listboxs, ajout d'item - items invisibles
    Par Hakenaton dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/06/2010, 15h14
  2. focus entre deux listbox
    Par krokmitaine dans le forum Delphi
    Réponses: 6
    Dernier message: 13/12/2006, 07h18
  3. vb.net: problème entre checkedlistbox/listbox
    Par 1coni dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/05/2006, 16h06
  4. Drag & Drop entre 2 listBox : transfert items
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/01/2006, 10h56
  5. Problème entre 2 listbox à selection multiple
    Par SoaB dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/10/2005, 16h05

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