Recherche double

Salut
Je travaille sur un projet sur Excel et j’ai une problème dans la recherche car d’habitude je fait le recherche pour un seul valeur (TextBox1) mais maintenant je faire une recherche pour deux valeurs (TextBox1 et TextBox2)

voici mon code:

Application.ScreenUpdating = False
   Set F = ActiveSheet
   Me.ListBox1.Clear
   
 
 With ListBox1
.ColumnCount = 6
.ColumnWidths = "80;150;80;80;80;80"
.RowSource = ""
End With

   Set plage = F.[b5].CurrentRegion
   plage.Interior.ColorIndex = 2
   Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1)
   Set c = plage.Find(Me.TextBox1, , , xlPart)
   If Not c Is Nothing Then
     i = 0
     premier = c.Address
     Do
       Me.ListBox1.AddItem
       Me.ListBox1.List(i, 0) = c.Offset(0, -1)
       Me.ListBox1.List(i, 1) = c.Value
       Me.ListBox1.List(i, 2) = c.Offset(0, 1)
       Me.ListBox1.List(i, 3) = c.Offset(0, 3)
       Me.ListBox1.List(i, 4) = c.Offset(0, 4)
       Me.ListBox1.List(i, 5) = c.Offset(0, 2)
       
       i = i + 1
       Set c = plage.FindNext(c)
     Loop While Not c Is Nothing And c.Address <> premier
   End If


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.


merci d'avance

2 réponses

  1. Contributeur
    Bonjour
    Jordane, excuse l'incruste

    saddoud,
    d'après ton tableau il ne peut y avoir de doublon produit+marque: on cherche donc la ligne ou se trouve le produit et la matque par une compraison de concaténation produit-marque dan s l'usf et la feuille
    j'ai rectifié les largeurs des colonnes de la listbox
    à toi de marquer au dessus de la listbox les désignations

    code proposé
    Option Explicit
    '------------------------------------------------
    Private Sub UserForm_Initialize()
    With ListBox1
    .ColumnCount = 5
    .ColumnWidths = "80;150;80;30;30"
    .RowSource = ""
    End With

    End Sub

    Private Sub CommandButton1_Click()
    Dim Concat As String
    Dim Derlig As Integer, Lig As Integer, Donnees
    If TextBox1 = "" Or TextBox2 = "" Then GoTo vides
    Concat = TextBox1 & " " & TextBox2

    With Sheets("feuil1")
    Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
    For Lig = 6 To Derlig
    If .Cells(Lig, "B") & " " & .Cells(Lig, "C") = Concat Then
    Donnees = .Range(.Cells(Lig, "A"), .Cells(Lig, "E"))
    UserForm2.ListBox1.Column() = Application.Transpose(Donnees)
    Exit For
    End If
    Next
    If Lig > Derlig Then GoTo inconnu
    End With

    Exit Sub
    'gestionnaire erreurs
    vides:
    MsgBox "Produit et/ou Marque absent(s)", vbCritical
    Exit Sub
    inconnu:
    MsgBox "Produit et/ou Marque inconnu(s)", vbCritical
    End Sub


    le classeur en retour:
    http://www.cjoint.com/c/FGbju4Wth5t

     Michel
    1
    1. Modérateur
      Bonjour,

      Je trouve bien ta recherche de textbox1 ...
       Set c = plage.Find(Me.TextBox1, , , xlPart)
      

      ... mais ... où est celle de ta textbox2 ?

      Peux tu également nous indiquer en détail le souci (la difficulté) rencontré(e) ?

      0
      1. salut jordane45

        Dans ce code je peux faire la recherche on utilisons un seul textbox et moi je cherche un code avec double recherche .... je veux faire un recherche dans un tableau a base de deux valeur et la ligne trouver sera copier dans un listbox

        merci
        0
      2. Modérateur
        @Saddoud_walidCes "deux" valeurs... se trouvent comment dans ton fichier ? Où dois tu les chercher ?
        Faut il qu'il y ai les deux valeurs ensembles ou si une des deux est présente c'est bon ..???

        Comme tu peux le voir... il y a des questions en suspend ... n'étant pas devant ton pc ni dans ta tête.... merci de nous expliquer CLAIREMENT et EN DETAIL ce que tu souhaites obtenir......
        0