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

XL 2016 RECHERCHV à 2 Critéres

  • Initiateur de la discussion Initiateur de la discussion davidp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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) ?
 
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

Dernière édition:
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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