Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes.
=RechercheVmulti($C$3;$B$3;$H$3)

=RechercheVmulti($C$3;$B$3;$A$3; 20)

Option Explicit
'RD =cellule où commencer la recherche
'RC = cellule critère
'RDT = cellule où chercher la donnée
'Ligne rechercher jusque ligne... (optional) si 0 cherche jusqu'au bout de la ligne
Public Function RechercheVmulti(RD As Range, RC As Range, RDT As Range, _
Optional Ligne As Long = 0)
Dim i As Integer, e As Integer, Txt As String
Dim LigE As Long, ColE As Long 'où écrire résultats
Dim Col As Integer
Dim Lig As Long, Occ As Long
Dim FeuilE As String, FeuilRD As String, FeuilRDT As String
On Error GoTo sortie
LigE = Application.Caller.Row
ColE = Application.Caller.Column
FeuilE = Application.Caller.Parent.Name
Application.Volatile
Lig = RD.Row ' Ligne où commencer la recherche
Col = RD.Column 'Colonne où commencer la recherche
FeuilRD = RD.Parent.Name
FeuilRDT = RDT.Parent.Name
If Ligne = 0 Then
Ligne = Range(Sheets(FeuilRD).Cells(65536, Col), Sheets(FeuilRD).Cells(65536, Col)).End(xlUp).Row
End If
'Recherche le numéro de l'occurrence à trouver
For Occ = LigE - 1 To 1 Step -1
Txt = Sheets(FeuilE).Cells(Occ, ColE).Formula
If Txt = Sheets(FeuilE).Cells(LigE, ColE).Formula Then
e = e + 1
End If
Next Occ
For i = Lig To Ligne
If Sheets(FeuilRD).Cells(i, Col) = RC Then
If e <> 0 Then
e = e - 1
Else
RechercheVmulti = Sheets(FeuilRDT).Cells(i, RDT.Column)
Exit Function
End If
End If
Next i
'Si plus trouvé de concordance
RechercheVmulti = ""
Exit Function
sortie:
'si erreur dans la formule, non détectée par Excel.
RechercheVmulti = "#FAUTE!"
End Function
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.