Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 VBA - Listbox critère

  • Initiateur de la discussion Initiateur de la discussion sand13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sand13

XLDnaute Occasionnel
Bonjour à tous,

J'ai une petite matrice où j'ai en colonne des tâches à effectuer et en ligne les personnes qui peuvent le faire (symbolisé par un "x" à la croisée de la personne et de la tâche).

Dans un UserForm, j'ai une listbox qui me donne la liste des personnes.

Je souhaiterai que dans une deuxième listbox apparaisse la liste des tâches que cette personne est habilitée à exécuter.

Auriez-vous des pistes à me proposer ?

D'avance merci !
 

Pièces jointes

Bonjour Sand, bonjour le forum,

Désolé mais j'ai complètement modifié ton fichier... Si ça convient pas tu jettes !... Ça se passe dans l'onglet Feuil2...
Le code :

VB:
Private O As Worksheet 'déclare la variable O (Onglet)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Private Sub UserForm_initialize() 'à l'initialisation de l'UserForm
Set O = Worksheets("Feuil2") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Me.ComboBox1.List = O.Range("A2:A" & O.Cells(Application.Rows.Count, "A").End(xlUp).Row).Value 'alimente la ComboBox1
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Me.ListBox2.Clear 'vide la ListBox2
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tbaleau des valeurs TV (en partant de la seconde)
    If TV(I, 1) = Me.ComboBox1.Value Then
        For J = 2 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tbaleau des valeurs TV (en partant de la seconde)
            'si la donnée ligne I colonne J de TV (convertie en majuscule) est égale à "X", ajoute la donnée ligne 1 colonne J à la ListBox1
            If UCase(TV(I, J)) = "X" Then Me.ListBox2.AddItem TV(1, J)
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
End Sub

Le fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
108
Réponses
7
Affichages
981
Réponses
3
Affichages
375
Réponses
2
Affichages
248
Réponses
1
Affichages
109
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…