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

XL 2016 RECHERCHV à 2 Critéres

davidp

XLDnaute Occasionnel
Bonjour le forum,

Désolé de vous déranger , j'ai une nouvelle fois besoin de votre aide .

Je dois réaliser un recherchv à 2 critères , cela fonctionne lorsque je prends un petite plage , mais lorsque je mets la plage complete environ 5780 lignes , les valeurs recherchées passent à zero lorsque je mets les vrais données ( magasin et EAN)

Auriez-vous une formule équivalente qui pourrait fonctionner sur un nombre important de ligne?

La formule actuelle se trouve sur la feuille "résultat" à partir de la cellule Z5

Merci d'avance pour votre aide

DAVIDP
 

Pièces jointes

  • Forum 2 conditions.xlsm
    394.4 KB · Affichages: 33

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir davidp,

Sur mon PC, la formule du fichier joint fonctionne même si c'est un peu long (formules matricielles sur de nombreuses lignes obligent).
Le problème se situe peut-être dans le vrai fichier (fichier que nous ne connaissons pas) ?
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir David, mapomme, le Forum

@davidp: dans la feuille Data sélectionne les magasins de 1 à 5 par exemple. Va dans Formules> définir un nom, nomme la plage magasins et met 6000 ou ce que tu veux comme nombre de lignes. Idem pour Ean et Top. Ensuite, dans la feuille résultat

=SOMMEPROD((magasins=C5)*(eans=L5)*top) et tire vers le bas.
 

Pièces jointes

  • Forum 2 conditions.xlsx
    324.9 KB · Affichages: 16
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Avec cette formule, le résultat peut être alphaNumérique ( ce que ne permet pas SommeProd)

=INDEX(resultat;EQUIV(1;(magasin=C5)*(ean=L5);0))

JB
 

Pièces jointes

  • Copie de Forum 2 conditions.xlsm
    537.1 KB · Affichages: 21
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Avec une fonction perso (temps de réponse instantané)

-sélectionner Z5:Z5780
=RechvM(C5:C5780; L5:L5780; magasin;ean; resultat;"inconnu")
-Valider avec maj+crtl+entrée


Code:
Function Rechv2Crit(clé1 As Range, clé2 As Range, Clé1Tbl As Range, Clé2Tbl As Range, RésultTbl As Range, messageErreur)
  Application.Volatile
  Set d = CreateObject("Scripting.Dictionary")
  a = RésultTbl.Value
  b = Clé1Tbl.Value
  c = Clé2Tbl.Value
  TbClé1 = clé1.Value
  TbClé2 = clé2.Value
  For i = LBound(a) To UBound(a)
  d(b(i, 1) & "|" & c(i, 1)) = a(i, 1)
  Next i
  Dim temp(): ReDim temp(LBound(TbClé1) To UBound(TbClé1), 1 To 1)
  For i = LBound(TbClé1) To UBound(TbClé1)
  If d.exists(TbClé1(i, 1) & "|" & TbClé2(i, 1)) Then temp(i, 1) = d(TbClé1(i, 1) & "|" & TbClé2(i, 1)) Else temp(i, 1) = messageErreur
  Next i
  Rechv2Crit = temp
End Function

jb
 

Pièces jointes

  • Rechv2Criteres.xlsm
    351.9 KB · Affichages: 16
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…