Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Recherche d'une valeur de la feuil1 dans une base de la feuil2

yvesauff

XLDnaute Nouveau
Bonjour à tous,
Je ne métrise pas les fonctions INDEX, EQUIV mais ce n'est peut être la solution.
Voici ce que je cherche à faire.
Dans le colonne D de ma feuil1 j'ai différentes valeurs.
Dans ma feuil2, il y a plusieurs lignes qui contiennent cette valeur et je souhaiterais récupérer ces numéros de lignes.
Tous les conseils sont bien venus.

Merci
 

djidji59430

XLDnaute Barbatruc
Bonjour,
Dans ma feuil2, il y a plusieurs lignes qui contiennent cette valeur

Plusieurs fois la meme valeur dans une ligne
ou
plusieurs lignes dans une meme colonne
ou
un panaché des deux ?

- - - Un fichier EXCEL (test ou non), complété par des explications exhaustives et des exemples remplis à la main, mis sur le forum, permettrait aux intervenants de répondre plus précisément à ta question.
Crdmt
 

job75

XLDnaute Barbatruc
Bonjour yvesauff, djidji59430, le forum,

Avec cette macro le résultat est donné par une MsgBox :
VB:
Sub Recherche()
Dim F1 As Worksheet, F2 As Worksheet, d As Object, r As Range, P As Range, v, n&, mes$, nn&, col As Variant
Set F1 = Sheets("Feuil1")
Set F2 = Sheets("Feuil2")
'---liste des valeurs---
Set d = CreateObject("Scripting.Dictionary")
For Each r In F1.[D1].Resize(F1.Cells.SpecialCells(xlCellTypeLastCell).Row) 'colonne D
    If Not IsError(r) Then If r <> "" Then d(r.Value) = ""
Next
If d.Count = 0 Then Exit Sub
'---recherche des lignes en F2---
Set P = F2.UsedRange.Rows
For Each v In d.Keys
    n = Application.CountIf(P, v)
    If n Then
        mes = mes & vbLf & "Valeur " & v & " en ligne" & IIf(n > 1, "s ", " ")
        nn = 0
        For Each r In P
            col = Application.Match(v, r, 0)
            If IsNumeric(col) Then
                mes = mes & IIf(nn = 0, "", ", ") & r.Row
                nn = nn + 1
                If nn = n Then Exit For
            End If
        Next r
    End If
Next v
MsgBox IIf(mes = "", "Aucune valeur trouvée...", Mid(mes, 2)), , "Sur " & F2.Name
End Sub
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…