XL 2016 Plage dans fonction INDEX EQUIV

sylvain78b

XLDnaute Nouveau
Bonjour,

Est-ce possible de réaliser un =INDEX(EQUIV sans nécessairement connaitre la plage de la colonne et de la ligne ?

=INDEX('Source FR'!1:1048576;EQUIV('Mandat FR'!B6;'Source FR'!A:A;0);EQUIV('Mandat FR'!C6;'Source FR'!A14:AB14;0))

Par exemple dans cette exemple, ma valeur se trouve dans la colonne A, ligne 14. Mais est-ce obligatoire de spécifier la valeur ? N’est-ce pas possible de spécifier une plage ? Avec par exemple que ma valeur peut se trouver entre la colonne A et C et entre la ligne 14 et 135 ?

Merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Mais vous voudriez restituer quoi ?
Parce que restituer ce que vous cherchez me semble sans intérêt !
Cette fonction restitue néanmoins la 1ère cellule ayant le valeur cherchée, alors on peut utiliser par exemple INDEX('Source FR'!1:1048576 ;LIGNE(ChercheCelPlage('Mandat FR'!B6;'Source FR'!A14:C135);…?) pour restituer autre chose de la même ligne s'y rapportant.
VB:
Function ChercheCelPlage(ByVal Quoi, ByVal Rng As Range) As Range
   Set ChercheCelPlage = Rng.Find(Quoi, LookAt:=xlWhole)
   End Function
 

Dranreb

XLDnaute Barbatruc
Je n'avais pas vu que vous vouliez restituer un cellule d'une autre feuille, à la même place.
Cette fonction perso serait peut être mieux indiquée:
VB:
Function Correspondance(ByVal Restit, ByVal Quoi, ByVal OùÇa)
   Dim L As Long, C As Long
   If TypeOf Restit Is Range Then Restit = Restit.Value
   If TypeOf Quoi Is Range Then Quoi = Restit.Value
   If TypeOf OùÇa Is Range Then OùÇa = OùÇa.Value
   For L = 1 To UBound(OùÇa, 1): For C = 1 To UBound(OùÇa, 2)
      If OùÇa(L, C) = Quoi Then Exit For
      Next C, L
   If L <= UBound(OùÇa, 1) Then Correspondance = Restit(L, C)
   End Function
 

Discussions similaires

Réponses
6
Affichages
557

Statistiques des forums

Discussions
312 160
Messages
2 085 837
Membres
102 998
dernier inscrit
billABDELL