Bonjour,
OK, donc, dans la ListView1 les articles correspondants aux références qu'il a déjà commandé mais dans la ListView2 elle est où la liste des articles qu'il n'a jamais commandé mais qu'il souhaite avoir dès à présent ? Cette liste est sur une autre feuille servant de base de données ou alors tu veux simplement voir apparaître les références manquantes car si c'est le cas, une ListView n'a pas lieu d'être, une simple ListBox suffit ou alors, mettre simplement en évidence les références manquantes dans la ListView1 par un formatage (gras, couleur, etc...). Le code du bouton de recherche avec mise en évidence des références manquantes dans la ListView1 qui vient en remplacement de l'existant :
Private Sub CommandButton1_Click()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Tbl
Dim Code As String
Dim I As Integer
Dim J As Integer
If TextBox1.Text = "" Then Exit Sub
If TextBox6.Text = "" Then Exit Sub
'le premier bouton représente les codes clients, si il est choisi, la plage est définie sur la colonne B à partir de B2
If OptNum.Value Then
With Worksheets("Sheet1"): Set Plage = .Range(.Cells(6, 5), .Cells(.Rows.Count, 5).End(xlUp)): End With
Else
With Worksheets("Sheet1"): Set Plage = .Range(.Cells(6, 6), .Cells(.Rows.Count, 6).End(xlUp)): End With
End If
'effectue la recherche du client
Set Cel = Plage.Find(TextBox1.Text, , xlValues, xlWhole)
If Cel Is Nothing Then MsgBox "Client non trouvé !": Exit Sub
'extrait le nom de la feuille de l'adresse du lien
Set Fe = Worksheets(Split(Cel.Offset(, IIf(OptNum.Value, 2, 1)).Hyperlinks(1).SubAddress, "!")(0))
'défini la plage sur la colonne A à partir de A2
With Fe: Set Plage = .Range(.Cells(7, 5), .Cells(.Rows.Count, 5).End(xlUp)): End With
Tbl = Split(TextBox6.Text, ",")
For I = 0 To UBound(Tbl)
'effectue la recherche
Set Cel = Plage.Find(Trim(Tbl(I)), , xlValues, xlWhole)
With ListView1
'si trouvé...
If Not Cel Is Nothing Then
With .ListItems: .Add , , Trim(Tbl(I)): End With
J = J + 1
'Remplissage des colonnes
.ListItems(J).ListSubItems.Add , , Cel.Offset(, 1).Value
.ListItems(J).ListSubItems.Add , , Cel.Offset(, 2).Value
.ListItems(J).ListSubItems.Add , , Cel.Offset(, 3).Value
.ListItems(J).ListSubItems.Add , , Cel.Offset(, 5).Value
'si les références sont manquantes, les inscrit en gras et rouge
Else
With .ListItems: .Add , , Trim(Tbl(I)): End With
J = J + 1
.ListItems(J).Bold = True
.ListItems(J).ForeColor = &HFF&
End If
End With
Next I
End Sub