Bonsoir

A l'aide d'un textbox, je filtre une plage de données pour alimenter une listbox.

Si la valeur recherchée est sur la première colonne. L'affichage se fait fait correctement dans la listbox.

Par contre, si cette valeur est issue d'une autre colonne. L'affichage dans la listbox est décalée.

Avec la fonction C.Offset, je n'arrive pas à me caler toujours dans la même colonne en fonction la ligne trouvé.

Merci de votre aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub TextBox4_Change()
 
Dim Plage As Range, Cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Integer, N As Integer
Dim C As Range
 
ListBox1.Clear
N = 0
 
Recherche = TextBox4.Value
Range("D4").Select
 
Ligne = Feuil1.Range("D" & "65536").End(xlUp).Row
Set Plage = Feuil1.Range("D" & "3:" & "I" & Ligne)
 
With Plage
Set C = .Find(Recherche)
If Not C Is Nothing Then
Adresse = C.Address
Do
    If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
 
        'alimentation listBox
        ListBox1.AddItem C.Offset(0, 0), N
      '  ListBox1.List(N, 1) = C
        ListBox1.List(N, 1) = C.Offset(0, 1)
        ListBox1.List(N, 2) = C.Offset(0, 2)
        ListBox1.List(N, 3) = C.Offset(0, 3)
        ListBox1.List(N, 4) = C.Offset(0, 4)
        ListBox1.List(N, 5) = C.Offset(0, 5)
        N = N + 1
    End If
 
    Set C = .FindNext(C)
    Loop While Not C Is Nothing And C.Address <> Adresse
    End If
End With
End Sub