VBA match multicritères

4 réponses
Avatar
Droopy191
Bonjour,

Je cherche à faire un equiv multicritères en VBA.
Dans la feuille de donnée, si je concatène 2 colonnes, et utilise
EQUIV, ca marche.
Comment faire en VBA sans passer par cette colonne supplémentaire dans
la feuille ?

J'ai vu ce genre de code comme ci-dessous sur le web mais je n'arrive
pas à l'appliquer:


ref_A et ref_B sont 2 chaines de caractères contenant mes critères
L_A et L_B 2 plages nommées dans une feuille liée à une base externe.


en simplifié

With Worksheets("gamme")

N_ligne = Application.Match(ref_A & "-" & ref_B, "" & .Range("L_A") &
"-" & .Range("L_B"), 0)

End with


en sortie j'ai tjs un #VALEUR!
J'ai vu aussi des codes basés sur evaluate sans pouvoir l'appliquer non
plus.


Merci pour vos pistes

--
DR

4 réponses

Avatar
DanielCo
Bonjour,
For i = 1 To [L_A].Count
If Range("L_A")(i) = ref_A And Range("L_B")(i) = ref_b Then
MsgBox i
Exit Sub
End If
Next i
Cordialement.
Daniel

Bonjour,

Je cherche à faire un equiv multicritères en VBA.
Dans la feuille de donnée, si je concatène 2 colonnes, et utilise
EQUIV, ca marche.
Comment faire en VBA sans passer par cette colonne supplémentaire
dans la feuille ?

J'ai vu ce genre de code comme ci-dessous sur le web mais je n'arrive
pas à l'appliquer:


ref_A et ref_B sont 2 chaines de caractères contenant mes critères
L_A et L_B 2 plages nommées dans une feuille liée à une base externe.


en simplifié

With Worksheets("gamme")

N_ligne = Application.Match(ref_A & "-" & ref_B, "" & .Range("L_A") &
"-" & .Range("L_B"), 0)

End with


en sortie j'ai tjs un #VALEUR!
J'ai vu aussi des codes basés sur evaluate sans pouvoir l'appliquer
non plus.


Merci pour vos pistes
Avatar
isabelle
bonjour,

pour le premier match trouvé,
x = Evaluate("=MATCH(ref_A&ref_B,L_A&L_B,0)")

pour le nombre de ligne répondant au 2 critères
x = Evaluate("=SUMPRODUCT(--(L_A=ref_A)*(L_B=ref_B))")

isabelle

Le 2016-04-22 02:59, Droopy191 a écrit :
Bonjour,

Je cherche à faire un equiv multicritères en VBA.
Dans la feuille de donnée, si je concatène 2 colonnes, et utilise EQUIV, ca
marche.
Comment faire en VBA sans passer par cette colonne supplémentaire dans la feuille ?

J'ai vu ce genre de code comme ci-dessous sur le web mais je n'arrive pas à
l'appliquer:


ref_A et ref_B sont 2 chaines de caractères contenant mes critères
L_A et L_B 2 plages nommées dans une feuille liée à une base externe.


en simplifié

With Worksheets("gamme")

N_ligne = Application.Match(ref_A & "-" & ref_B, "" & .Range("L_A") & "-" &
.Range("L_B"), 0)

End with


en sortie j'ai tjs un #VALEUR!
J'ai vu aussi des codes basés sur evaluate sans pouvoir l'appliquer non plus.


Merci pour vos pistes

Avatar
Droopy191
Avatar
Droopy191