Listbox click pour remplir une autre listbox

  • Initiateur de la discussion Initiateur de la discussion FaruSZ
  • 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 !

FaruSZ

XLDnaute Occasionnel
Bonjour,

J'ai 2 listboxes, la 1ere se rempli a partir des données qui sont dans la feuille "Verif_M1" colonne A comme suit:

aaa.JPG


la 2eme se remplit en cliquant sur un élément de la 1ere listbox par exemple 001-10-20-M1-F j'aurai tous ce qui est en ligne 2 de la colonne B a la dernière colonne qui s'affiche dans ma 2eme liste:

j'ai rédigé le code suivant mais ca ne marche pas:
VB:
Private Sub ListBox1_Click()
curVal = Me.ListBox1.Value
Set c = ActiveWorkbook.Worksheets("Verif_M1").Rows(1).Find(curVal, lookat:=xlWhole)
If c.Offset(1, 0).Value = "" Then Exit Sub

Set Rng = Range(c.Offset(1, 0), c.End(xlDown))
ListBox2.Clear
If Rng.Rows.Count = 1 Then ListBox2.AddItem c.Offset(1, 0).Value
If Rng.Rows.Count > 1 Then ListBox2.List = Application.Transpose(Rng)
End Sub

l'erreur est: variable objet ou variable bloc non défini ( ligne : If c.Offset(1, 0).Value = "" Then Exit Sub)
 

Pièces jointes

Bonjour,
Difficile de trouver le contexte pour tester. J'ai donc dû créer une fonction d'affichage et remplissage de la ListBox1 du UserForm UF_Verif_M1. C'est quand même bien utile de se mettre à la place des autres avant de demander de l'assistance pour un peu leur faciliter la tâche et obtenir des réponses.

VB:
Private Sub ListBox1_Click()
    Dim curVal As Variant
    Dim c As Range
    Dim Rng As Range
    
    With ActiveWorkbook.Worksheets("Verif_M1")
        curVal = Me.ListBox1.Value
        Set c = .Columns(1).Find(curVal, lookat:=xlWhole)
        If c Is Nothing Then Exit Sub
        If IsEmpty(c.Offset(0, 1)) Then Exit Sub
        
        Set Rng = c.Offset(0, 1).Resize(1, .Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1)
        ListBox2.Clear
        If Rng.Cells.Count = 1 Then
            ListBox2.AddItem Rng.Value
        Else
            ListBox2.List() = Application.Transpose(Rng)
        End If
    End With
End Sub
 
Bonjour,
Difficile de trouver le contexte pour tester. J'ai donc dû créer une fonction d'affichage et remplissage de la ListBox1 du UserForm UF_Verif_M1. C'est quand même bien utile de se mettre à la place des autres avant de demander de l'assistance pour un peu leur faciliter la tâche et obtenir des réponses.

VB:
Private Sub ListBox1_Click()
    Dim curVal As Variant
    Dim c As Range
    Dim Rng As Range
   
    With ActiveWorkbook.Worksheets("Verif_M1")
        curVal = Me.ListBox1.Value
        Set c = .Columns(1).Find(curVal, lookat:=xlWhole)
        If c Is Nothing Then Exit Sub
        If IsEmpty(c.Offset(0, 1)) Then Exit Sub
       
        Set Rng = c.Offset(0, 1).Resize(1, .Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1)
        ListBox2.Clear
        If Rng.Cells.Count = 1 Then
            ListBox2.AddItem Rng.Value
        Else
            ListBox2.List() = Application.Transpose(Rng)
        End If
    End With
End Sub
Merci bcp je vais simplifier mes fichiers pour pouvoir les consulter facilement.
Ca marche bien.
 
Bonjour.
À mon avis le plus pratique serait un tableau de toutes les lames avec une colonne pour chacune de ses caractéristiques, et un seul UserForm pour en ajouter, modifier ou supprimer une isolée par une combinaison des caractéristiques tapés ou sélectionnées dans des ComboBox prises en charge par un objet ComboBoxLiées mis à disposition par cette ressource :
 
Bonjour,
Difficile de trouver le contexte pour tester. J'ai donc dû créer une fonction d'affichage et remplissage de la ListBox1 du UserForm UF_Verif_M1. C'est quand même bien utile de se mettre à la place des autres avant de demander de l'assistance pour un peu leur faciliter la tâche et obtenir des réponses.

VB:
Private Sub ListBox1_Click()
    Dim curVal As Variant
    Dim c As Range
    Dim Rng As Range
   
    With ActiveWorkbook.Worksheets("Verif_M1")
        curVal = Me.ListBox1.Value
        Set c = .Columns(1).Find(curVal, lookat:=xlWhole)
        If c Is Nothing Then Exit Sub
        If IsEmpty(c.Offset(0, 1)) Then Exit Sub
       
        Set Rng = c.Offset(0, 1).Resize(1, .Cells(c.Row, Columns.Count).End(xlToLeft).Column - 1)
        ListBox2.Clear
        If Rng.Cells.Count = 1 Then
            ListBox2.AddItem Rng.Value
        Else
            ListBox2.List() = Application.Transpose(Rng)
        End If
    End With
End Sub

Bonjour.
À mon avis le plus pratique serait un tableau de toutes les lames avec une colonne pour chacune de ses caractéristiques, et un seul UserForm pour en ajouter, modifier ou supprimer une isolée par une combinaison des caractéristiques tapés ou sélectionnées dans des ComboBox prises en charge par un objet ComboBoxLiées mis à disposition par cette ressource :
Bonjour, merci pour les instructions je vais essayer de faire comme ca.
 
À votre disposition pour vous aider à écrire les petites procédures qui utiliseront l'objet.
Le plus gros se fait dans la Sub UserForm_Initialize.
C'est mieux si la plage de données est sous forme de tableau Excel. Ça permet entre autre de spécifier le titre de la colonnes en guise de spécification de colonne à la méthode Add des objets ComboBoxLiées et ControlsAssociés.
 
À votre disposition pour vous aider à écrire les petites procédures qui utiliseront l'objet.
Le plus gros se fait dans la Sub UserForm_Initialize.
C'est mieux si la plage de données est sous forme de tableau Excel. Ça permet entre autre de spécifier le titre de la colonnes en guise de spécification de colonne à la méthode Add des objets ComboBoxLiées et ControlsAssociés.
Ok merci je reviens vers vous une fois que je termine de faire mon code.
 
- 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
10
Affichages
281
Réponses
5
Affichages
235
Réponses
5
Affichages
232
Réponses
2
Affichages
153
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour