XL 2021 Filtre combobox

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

Jobart

XLDnaute Nouveau
Bonjour à tous

j'ai un combobox (désignation) que je filtre en fonction d'une autre ( catégorie articles).

lorsque je choisis une valeur dans la catégorie articles, les valeurs correspondantes a la désignation s'affiche bien.

mon soucis est que lorsque je choisis à nouveau un autre catégorie d'articles, au lieu que les valeurs dans le combobox désignation soit celle uniquement celle de la nouvelle catégorie , les nouvelles valeurs viennent s'ajouter à celle déjà saisie.

voici le code que j'ai utilisé.

Code:
Private Sub ComboArticles_Change()

Dim Lr As Long, i As Long
Dim f As Worksheet
Dim key As String
Set f = Sheets("Articles")

Me.ComboDesignation.ListIndex = -1

Lr = f.Range("a" & Rows.Count).End(xlUp).Row
key = Me.ComboArticles.Value

For i = 2 To Lr

    If key = f.Range("l" & i).Value Then
        
        Me.ComboDesignation.AddItem f.Range("B" & i).Value
        
    End If
Me.ComboDesignation.ListIndex = -1

Next i
Set f = Nothing

End Sub

Pj: le fichier exemple

merci d'avance pour vos différentes contributions
cordialement
 

Pièces jointes

Solution
Bonjour à tous

j'ai un combobox (désignation) que je filtre en fonction d'une autre ( catégorie articles).

lorsque je choisis une valeur dans la catégorie articles, les valeurs correspondantes a la désignation s'affiche bien.

mon soucis est que lorsque je choisis à nouveau un autre catégorie d'articles, au lieu que les valeurs dans le combobox désignation soit celle uniquement celle de la nouvelle catégorie , les nouvelles valeurs viennent s'ajouter à celle déjà saisie.

voici le code que j'ai utilisé.

Code:
Private Sub ComboArticles_Change()

Dim Lr As Long, i As Long
Dim f As Worksheet
Dim key As String
Set f = Sheets("Articles")

Me.ComboDesignation.ListIndex = -1

Lr = f.Range("a" & Rows.Count).End(xlUp).Row
key =...
Bonjour à tous

j'ai un combobox (désignation) que je filtre en fonction d'une autre ( catégorie articles).

lorsque je choisis une valeur dans la catégorie articles, les valeurs correspondantes a la désignation s'affiche bien.

mon soucis est que lorsque je choisis à nouveau un autre catégorie d'articles, au lieu que les valeurs dans le combobox désignation soit celle uniquement celle de la nouvelle catégorie , les nouvelles valeurs viennent s'ajouter à celle déjà saisie.

voici le code que j'ai utilisé.

Code:
Private Sub ComboArticles_Change()

Dim Lr As Long, i As Long
Dim f As Worksheet
Dim key As String
Set f = Sheets("Articles")

Me.ComboDesignation.ListIndex = -1

Lr = f.Range("a" & Rows.Count).End(xlUp).Row
key = Me.ComboArticles.Value

For i = 2 To Lr

    If key = f.Range("l" & i).Value Then
       
        Me.ComboDesignation.AddItem f.Range("B" & i).Value
       
    End If
Me.ComboDesignation.ListIndex = -1

Next i
Set f = Nothing

End Sub

Pj: le fichier exemple

merci d'avance pour vos différentes contributions
cordialement
Bonjour,
A tester :
VB:
Private Sub ComboArticles_Change()
Dim Lr As Long, i As Long
Dim f As Worksheet
Dim key As String
Set f = Sheets("Articles")
Me.ComboDesignation.Clear
Lr = f.Range("a" & Rows.Count).End(xlUp).Row
key = Me.ComboArticles.Value
For i = 2 To Lr
    If key = f.Range("l" & i).Value Then
        Me.ComboDesignation.AddItem f.Range("B" & i).Value
    End If
Me.ComboDesignation.ListIndex = -1
Next i
Set f = Nothing
End Sub
Cordialement,
 
Bonjour,
A tester :
VB:
Private Sub ComboArticles_Change()
Dim Lr As Long, i As Long
Dim f As Worksheet
Dim key As String
Set f = Sheets("Articles")
Me.ComboDesignation.Clear
Lr = f.Range("a" & Rows.Count).End(xlUp).Row
key = Me.ComboArticles.Value
For i = 2 To Lr
    If key = f.Range("l" & i).Value Then
        Me.ComboDesignation.AddItem f.Range("B" & i).Value
    End If
Me.ComboDesignation.ListIndex = -1
Next i
Set f = Nothing
End Sub
Cordialement,
Merci Gege- 45550 pour ta réponse!

çà marche parfaitement.

je voudrais profiter aussi pour soumettre un autre souci.

Dans mon userform, j'alimente ma listview avec les infos provenant de détails facture.

je voudrais que lorsque celle ci est alimenter (listview) pouvoir avec le bouton enregistrer exporter les données contenues dans le listview vers la feuille e calcul (Achat).

j'ai essayer avec ce code mais il passe. aucune info n'est copié.
je sais que ce n'est pas l'objet du topic. mais si tu pouvais y jeter un coup d'œil

merci
Code:
Private Sub BtnEnregistrer_Click()

Dim Ws As Worksheet
Dim L As Long, Cl As Long, i As Long, j As Long, Lr As Long
Dim Tbl() As Variant

Set Ws = Worksheets("Achat")
Ws.Select
With Me.ListVAppro
    
    'mise en memoire de la listview
    L = .ListItems.Count
    Cl = .ColumnHeaders.Count
        
    ReDim Tbl(1 To L + 1, 1 To Cl)
    
    For i = 1 To L
        Tbl(i, 1) = .ListItems(i).Text
        For j = 1 To Cl - 1
            Tbl(i, j + 1) = .ListItems(i).ListSubItems(j).Text
        Next j
    Next i
 
If .ListItems.Count < 1 Then

    MsgBox " Ajouter des produits a la facture!", vbCritical + vbOKOnly, ""
 
    Exit Sub
Else
    If MsgBox("Voulez - vous enregistrer cette facture?", vbYesNo, "Demande de confirmation") = vbYes Then
                        
        With Ws
        Lr = .Cells(Rows.Count, 1).End(xlUp).Row 'derniere ligne ocuppe sur la ligne A
        
        For i = 1 To L ' boucle sur les lignes du tableau
        
            .Range("c" & Lr + i) = Tbl(i, 1) ' Articles
            .Range("D" & Lr + i) = Tbl(i, 2) ' Qte
            .Range("e" & Lr + i) = Tbl(i, 3) ' PU
            .Range("f" & Lr + i) = Tbl(i, 4) ' Remise
            .Range("g" & Lr + i) = Tbl(i, 5) ' Montant
            .Range("b" & Lr + i) = CDate(Me.TextDate) ' Date
            .Range("h" & Lr + i) = Me.ComboFrs ' fournisseurs
            .Range("i" & Lr + i) = Tbl(i, 1) ' code facture
          
        Next i
                        
      End With
                        
    End If
End If
End With

Unload Me
FrmAppro.show

' reinitialiser listview
'Me.ListVAppro.ListItems.Clear

End Sub
 
ComboBoxLiées est un module de classe prenant complètement en charge un nombre quelconque de ComboBox correspondant à différentes colonnes d'un même tableau. Il leur définit les listes initiales classée et sans doublon à partir du contenu des colonnes du tableau et ensuite les listes filtrées en fonction des choix effectués dans certaines d'entre elles. À chaque changement d'une ComboBox prise en charge, il décrète des évènements pour communiquer à l'UserForm qui l'utilise la listes des numéros de ligne de la base comportant l'ensemble des choix effectués.
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
267
Réponses
40
Affichages
2 K
Réponses
3
Affichages
58
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
509
Retour