XL 2013 Filtre dynamique VBA Listbox simplification de code

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

dela

XLDnaute Nouveau
Bonjour à tous,

J'ai créé un code avec mes recherches à droite à gauche, afin de créer une recherche dynamique à l'aide de 3 TextBox.
Cela fonctionne très bien, donc déjà merci à tous ceux qui apportent leurs aides dans le forum.
Ma question est de savoir, s'il est possible de simplifier ce code ? En effet je le trouve lourd.
Pouvez-vous m'aider s'il vous plaît .
Merci 🙂

VB:
Private Sub UserForm_Initialize()
    Dim Rng  As Range
    Dim f  As Worksheet
    
  Set f = Sheets("BD")
  Set Rng = f.Range("A2:C" & f.[A65000].End(xlUp).Row)
  Me.ListBox1.ColumnCount = 3
  Me.ListBox1.ColumnWidths = "50;50;50"
  Me.ListBox1.List = Rng.Value
End Sub

Private Sub TextBox1_Change()
Dim i As Integer
Dim a As Integer
    TextBox1.Text = UCase(TextBox1.Text)
    Me.ListBox1.Clear
    For i = 2 To Application.WorksheetFunction.CountA(Worksheets("BD").Range("A:A"))
    a = Len(Me.TextBox1.Text)
    If Left(Worksheets("BD").Cells(i, 1).Value, a) = Left(Me.TextBox1.Text, a) Then
    Me.ListBox1.AddItem Worksheets("BD").Cells(i, 1).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Worksheets("BD").Cells(i, 2).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 2) = Worksheets("BD").Cells(i, 3).Value
End If
Next i
End Sub

Private Sub TextBox2_Change()
Dim i As Integer
Dim a As Integer
    TextBox2.Text = UCase(TextBox2.Text)
    Me.ListBox1.Clear
    For i = 2 To Application.WorksheetFunction.CountA(Worksheets("BD").Range("A:A"))
    a = Len(Me.TextBox2.Text)
    If Left(Worksheets("BD").Cells(i, 2).Value, a) = Left(Me.TextBox2.Text, a) Then
    Me.ListBox1.AddItem Worksheets("BD").Cells(i, 1).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Worksheets("BD").Cells(i, 2).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 2) = Worksheets("BD").Cells(i, 3).Value
End If
Next i
End Sub

Private Sub TextBox3_Change()
Dim i As Integer
Dim a As Integer
    TextBox3.Text = UCase(TextBox3.Text)
    Me.ListBox1.Clear
    For i = 2 To Application.WorksheetFunction.CountA(Worksheets("BD").Range("A:A"))
    a = Len(Me.TextBox3.Text)
    If Left(Worksheets("BD").Cells(i, 3).Value, a) = Left(Me.TextBox3.Text, a) Then
    Me.ListBox1.AddItem Worksheets("BD").Cells(i, 1).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Worksheets("BD").Cells(i, 2).Value
    Me.ListBox1.List(ListBox1.ListCount - 1, 2) = Worksheets("BD").Cells(i, 3).Value
End If
Next i
End Sub
 

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
3
Affichages
599
Réponses
4
Affichages
454
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
78
Réponses
10
Affichages
759
Retour