"Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

YANN-56

XLDnaute Barbatruc
Bonsoir à ceux qui passeront par là.

Dans une Feuille, par "Find",
je récupère le numéro de la ligne où se trouve
la Caption du Label1.

En l'occurrence, ici, en colonne B: "Fruits"

Cependant, comme dans cette colonne il y a
plusieurs lignes du même contenu,
J'ai besoin de peaufiner ma recherche par le "Code"
précisé dans le label2

J'ai bidouillé plein de trucs en vain.
Il y a sans doute un " Cells.FindNext(After:=" que je ne maîtrise pas!

Aussi je fais appel à vous en vous remercient par avance.

Bonne fin de soirée à vous.

'++++++++++++++++
Private Sub CommandButton1_Click()

UserForm1.Label3.Caption = Worksheets("LISTE").Cells.Find(UserForm1.Label1.Caption).Row
UserForm1.Label4.Caption = Worksheets("LISTE").Cells.Find(UserForm1.Label2.Caption).Row

'=================================
UserForm1.Label8.Caption = "???"

' J'aimerais y écrire la ligne ayant
' à la fois le Code et le Fruit cherchés,
' ================================
End Sub
' +++++++++++++++++++

Classeur Joint.

YANN-56
 

Pièces jointes

  • FIND_1.xls
    31 KB · Affichages: 62

JNP

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Bonsoir YANN-56 :),
Comme ton numéro de code est unique
Code:
UserForm1.Label4.Caption = Worksheets("LISTE").Cells.Find(UserForm1.Label2.Caption).Row
UserForm1.Label3.Caption = Worksheets("LISTE").Cells.Find(UserForm1.Label2.Caption).Row
Bonne soirée :cool:
 

YANN-56

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Bonsoir JNP,
Bien vu !!!

Je n'ai pas bien construit l'exemple!

Car dans mon cas, il peut y avoir des
"POIRE BLEUE", "POIRE BELLE HELENE" ou Autres
ayant le même code; mais pas la même désignation.
D'où la nécessité d'associer la recherche dans les deux colonnes.

Merci d'avoir pris la peine de regarder,
et pour le sourire aussi...!:confused:

Je rectifie la "LISTE"

Bonne fin de soirée, ou Bonjour, suivant l'heure.

YANN-56
 

Pièces jointes

  • FIND_2.xls
    31.5 KB · Affichages: 68

JNP

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Re :),
Merci d'avoir pris la peine de regarder,
et pour le sourire aussi...!:confused:
Il n'y a aucune conotation, je dis toujours "Bonjour :)" et "Au revoir :cool:", c'est dans mes petites habitudes de post, jamais pour me moquer...
Par contre, je connaissais les oranges bleues (Tintin) mais pas les poires bleues :p...
Vu sous cet angle
Code:
Dim Cellule As Range, PremièreAdresse As String
With Worksheets("LISTE").Range("B1:B500")
    Set Cellule = .Find(Label1.Caption)
    If Not Cellule Is Nothing Then
        PremièreAdresse = Cellule.Address
        Do
            If Cellule.Offset(0, -1) = Label2.Caption Then Exit Do
            Set Cellule = .FindNext(Cellule)
        Loop While Not Cellule Is Nothing And Cellule.Address <> PremièreAdresse
    End If
End With
UserForm1.Label8.Caption = Cellule.Row
devrait mieux te convenir.
Bonne journée :cool:
 

YANN-56

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Bonsoir à tous, et particulièrement à JNP, si tu passes par là,

J'avais un souci en ayant comme code de recherche (Textbox2)
Par exemple "5", puisque nombre de ceux de la feuille pouvaient
avoir ce caractère.
(D'autant qu'avec le mien de Cochon; je n'ai jamais pu bouffer"Offset")

J'ai donc bidouillé un truc à partir de ton aide, qui me satisfait bien.
(Pour info: résultat immédiat sur un listing de 22000 articles)

Je le livre à ceux qui pourraient s'y intéresser,
et à tes commentaires éventuels.

Dans mon appli en cours, une erreur de ligne ficherait un désordre énorme.
Si tu, ou vous entrevoyez dans ce code un risque, merci de me le dire.

'---------------------
Option Compare Text 'POUR IGNORER DIFFERENCE MAJUSCULES / MINUSCULES

Private Sub CommandButton1_Click()

With Worksheets("LISTE")

For i = .Cells.Find(UserForm1.TextBox1.Value).Row To _
.Cells.Find(UserForm1.TextBox1.Value).Row + 20
'+ 20 = Pour la Probalité de codes identiques

If .Cells(i, 1).Value = UserForm1.TextBox2.Text And _
.Cells(i, 2).Value = UserForm1.TextBox1.Text Then

UserForm1.Label8.Caption = i

End If

Next i

End With

End Sub
'---------------------------------

Classeur rectifié joint.

JNP m'a bien poussé à ne pas abandonner!

Si à parfaire l'on peut m'aider, d'avance MERCI.

Bonne fin de soirée ou Bonjour à tous, suivant l'heure.

Que vive ce super Site...!
Tellement empli de gens superbes.

YANN
 

Pièces jointes

  • FIND_3.xls
    29.5 KB · Affichages: 72

JNP

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Re :),
A mon avis, le problème d'utiliser un For I, même sur 20 alentour, ne te garanti pas qu'une ligne n'est pas perdue un peu plus loin. Personnellement, je préférerais mon code corrigé
Code:
Dim Cellule As Range, PremièreAdresse As String
With Worksheets("LISTE").Range("B1:B" & Range("B65536").End(xlUp).Row)
    Set Cellule = .Find(TextBox1.Text)
    If Not Cellule Is Nothing Then
        PremièreAdresse = Cellule.Address
        Do
            If Cellule.Offset(0, -1).Value = TextBox2.Text Then GoTo Solution
            Set Cellule = .FindNext(Cellule)
        Loop While Not Cellule Is Nothing And Cellule.Address <> PremièreAdresse
        MsgBox "Pas de correspondance"
        Exit Sub
    End If
End With
Solution:
UserForm1.Label8.Caption = Cellule.Row
Le problème venait qu'en cas d'absence de correspondance (poire et 5), il te renvoyait le premier POIRE rencontré (et non parce que 548 contient 5...) quand il avait terminé la boucle.
Bonne soirée :cool:
PS : Si tu n'aime pas Offset (j'aime pas spécialement non plus :p...), tu peux remplacer Cellule.Offset(0, -1).Value par Cells(Cellule.Row,1).Value
 

YANN-56

XLDnaute Barbatruc
Re : "Find" dans Feuille, mais sur deux Critères:Colonne1 & 2

Bonjour à ceux qui passeront par là,

Bonjour JPN:)

Tu as raison quant à ta remarque sur le risque de louper une ligne.
J'adopte ton code qui fonctionne à merveille.

En outre, ta façon de procéder est riche d'enseignement pour moi.

J'aime à citer ce proverbe chinois:

"Donne un poisson à un homme; il se nourrira ce jour.
Apprends –lui à pêcher; il se nourrira toute sa vie"

Dans le cadre de ma question: tu as fait les deux!

Merci beaucoup pour ton aide et pour le temps que tu y as consacré.

Bonne fin de semaine.

YANN
 

Statistiques des forums

Discussions
312 352
Messages
2 087 536
Membres
103 581
dernier inscrit
Boodur