Recherche d'une valeur dans un tableau selon 2 critères

Bonjour,

J'ai fait le tour de ce forum et de Google pour essayer de trouver une formule efficace mais en vain.

Je cherche une formule qui n'alourdirait pas ma base de données car elle peut avoir jusqu'à 10 000 lignes, ce qui fait qu'une formule avec index et/ou equiv rend ma base de données très très lente.

Explications de mon problème (voir fichier ci-joint) :

- La feuille Catégorie est ma référence.

Colonne A = le sexe (Masculin ou Féminin)

Colonne B = Animal (chat, chien, oiseau, tortue)

Colonne C = catégorie (2 pattes, 4 pattes, 4 pattes / griffe)

- La feuille Master es`t ce que je désire compléter

Colonne B = Animal (chat, chien, oiseau, tortue)

Colonne C = La catégorie que je cherche

Colonne D = le sexe (masculin ou féminin)

Je voudrais donc une formule excel rapide pour un fichier pouvant aller jusqu'à 10 000 lignes ou une formule VBA qui irait me trouver, pour chacune des lignes de la feuille Master (à la colonne C), la catégorie (c'est-à-dire la colonne C selon la feuille catégorie), qui correspond à l'animal (colonne B de la feuille Master) et du sexe (colonne D de la feuille Master).

Ça fait vraiment un bout que je cherche, si jamais quelqu'un peut m'aider, ça va devenir mon idole!!!

Un GROS merci!!

Voir le fichier joint.

101exemple.xlsx (12.42 Ko)

Bonsoir le forum,

Feuille Master : C2 : =SIERREUR(RECHERCHEV(B2;Categorie!B:C;2;0);"")

A tirer vers le bas.

mbbp

Merci pour votre réponse Mbbp.

Par contre, votre code ne fonctionne pas car il ne tient pas compte du 2e critère qui est le sexe de l'animal (Colonne D - Master).

Il est important car pour l'animal par exemple le Chat), j'ai une catégorie différente pour le sexe féminin et le sexe masculin.

Merci pour votre aide!

Bonjour,

=INDEX(Tableau1[Catégorie];MAX(SI((Master!B2=Tableau1[Animal])*(Master!D2=Tableau1[Sexe]);LIGNE(Tableau1[Catégorie])-5;0)))

à valider avec CTRL + MAJ + ENTRÉE, puis à recopier vers le bas.

Le -5 à la fin du code correspond au nombre de lignes "inutiles" en haut de la feuille Catégorie, 5 ici, puisque la première valeur est en A6.

bonsoir

sans validation

=SIERREUR(INDEX(Tableau1[Catégorie];SOMMEPROD((Tableau1[Sexe]=D2)*(Tableau1[Animal]=B2)*LIGNE(Tableau1[Sexe]))-5);"")

nb: je ne connais pas de formule efficaces au dela de 1000 lignes ; donc tu dois opter pour du vba

cordialement

Merci beaucoup à vous deux pour vos réponses.

Étant donné que mon fichier sera très volumineux, est-ce que vous êtes en mesure de me fournir un code VBA? J'ai essayé avec .find mais en vain.

Un gros merci encore une fois!

bonjour

t'inquietes pas ; ce forum est garni de pointures VBA , mais pour cause de week-end ..........

cordialement

Bonjour

Essaye avec ce code

Sub Recherche()
Application.ScreenUpdating = False

For i = 6 To Sheets("Categorie").Range("A65536").End(xlUp).Row
    Sheets("Categorie").Range("F" & i) = _
        Sheets("Categorie").Range("B" & i) & Sheets("Categorie").Range("A" & i)
Next i

For j = 2 To Range("A65536").End(xlUp).Row
    Rep = Range("B" & j) & Range("D" & j)
    Set r = Sheets("Categorie").Range("F:F").Find(Rep)
        If r Is Nothing Then Range("C" & j) = ""
        If Not r Is Nothing Then Range("C" & j) = r.Offset(0, -3)
Next j

Sheets("Categorie").Range("F:F").Clear
End Sub

Amicalement

Nad

Un gros merci tout le monde!!!!!!!!!!!!

Rechercher des sujets similaires à "recherche valeur tableau criteres"