Bonjour,
Voici une proposition avec une fonction personnalisée (via VBA).
Pour saisir le code suivant, il faut aller sur le volet développeur (s'il n'est pas activé, allez sur le volet Fichier > Options/Personnaliser le ruban/Cochez "Développeur") puis ouvrir l'éditeur Visual Basic, puis insérer un module via le menu contextuel "Insertion" et coller le code dedans :
Function EQUIV_MULT(Valeur_Cherchee, Plage As Range, Occurrence As Byte) As Integer
'PERMET D'OBTENIR LA POSITION D'UNE VALEUR DANS UN PLAGE À SA Nème OCCURRENCE
Application.volatile
For i = 1 To Plage.Count ' boucle sur i de 1 à la taille de la plage
If Plage.Cells(i).Value = Valeur_Cherchee Then 'si la valeur de la cellule à la ième position dans la plage = Valeur à chercher
Cpt = Cpt + 1 'incrémentation (Cpt commence à 0)
If Occurrence = Cpt Then 'si Cpt = Occurrence >>> CORRESPONDANCE
EQUIV_MULT = i 'La fonction retourne la position
Exit Function
End If
End If
Next i 'on passe au i suivant
End Function
Ensuite, vous pouvez saisir un INDEX EQUIV_MULT comme ça :
=INDEX(Feuil1!B4:B99;EQUIV_MULT(Feuil2!D4;Feuil1!C4:C99;7))
Dans cet exemple, EQUIV_MULT renvoie la 7è position de la valeur de D4 en C4:C99 et INDEX retourne la valeur associée en B4:B99.
En revanche, je ne sais pas comment vous l'utiliserez mais il faudra bien cadrer en amont son utilisation et parvenir à fixer une logique au niveau des occurrences, car pour l'instant, ça ne parait pas très clair...
Cdlt,