Filtrer une listview à partir du textbox

Bonjour à tous,

Je suis débutant en vba excel, je souhait filtrer mon listview1 dans la colonne Montant (6) en saisissant une valeur dans la textbox1 (Critère de recherche). Comme l'image présente, lorsque je click sur le bouton Filtre, aucun résultat s'affiche. Comment corriger et déclencher cette action. Voici le code que j'ai élaboré:

Dim i As Long
Dim filterAmount As Currency
Dim lvItem As ListItem
Dim tempItems() As Variant
Dim itemCount As Long
Dim montantStr As String
Dim montantNum As Currency

' Récupérer la valeur du TextBox et la convertir en nombre
filterAmount = Val(TextBox1.Text)

' Initialiser le compteur d'éléments
itemCount = ListView1.ListItems.Count

' Redimensionner le tableau pour stocker les éléments
ReDim tempItems(1 To itemCount, 1 To 6) ' 6 colonnes: Text et 5 SubItems

' Sauvegarder les éléments du ListView dans le tableau
For i = 1 To itemCount
Set lvItem = ListView1.ListItems(i)
tempItems(i, 1) = lvItem.Text
tempItems(i, 2) = lvItem.SubItems(1)
tempItems(i, 3) = lvItem.SubItems(2)
tempItems(i, 4) = lvItem.SubItems(3)
tempItems(i, 5) = lvItem.SubItems(4)
tempItems(i, 6) = lvItem.SubItems(5)
Next i

' Vider le ListView avant d'appliquer le filtre
ListView1.ListItems.Clear

' Parcourir tous les éléments sauvegardés dans le tableau
For i = 1 To itemCount
' Convertir le montant de chaîne à nombre en supprimant les séparateurs de milliers
montantStr = tempItems(i, 5)
montantStr = Replace(montantStr, ".", "") ' Remplacer les points
montantStr = Replace(montantStr, ",", ".") ' Remplacer les virgules par des points
montantNum = Val(montantStr)

' Débogage : Afficher les montants pour vérification
Debug.Print "MontantStr: " & montantStr & " | MontantNum: " & montantNum & " | FilterAmount: " & filterAmount

' Vérifier si le montant de l'élément correspond au critère de filtrage
If montantNum = filterAmount Then
' Débogage : Indiquer que le montant correspond
Debug.Print "Correspondance trouvée: " & montantNum

' Ajouter l'élément filtré au ListView
With ListView1.ListItems.Add(, , tempItems(i, 1))
.SubItems(1) = tempItems(i, 2)
.SubItems(2) = tempItems(i, 3)
.SubItems(3) = tempItems(i, 4)
.SubItems(4) = tempItems(i, 5)
.SubItems(5) = tempItems(i, 6)
End With
End If
Next i

' Débogage : Vérifier le nombre d'éléments dans le ListView après filtrage
Debug.Print "Nombre d'éléments après filtrage: " & ListView1.ListItems.Count
End Sub

Merci de votre collaboration

Cordialement,

resultat

Bonjour, et

A+

Rechercher des sujets similaires à "filtrer listview partir textbox"