XL 2016 Une RechercheV combiné a une RechercheH

gaby66

XLDnaute Occasionnel
Bonjour,

Je souhaiterais obtenir le résultat dans un tableau mais un peu plus complexe qu'une simple formule recherchev ou rechercheh.
Je sais également qu'avec index ou equiv cela peut être la solution mais je maîtrise moins ces fonctions (même après avoir regarder sur internet à ce sujet).
Je cherche donc à trouver une solution à mon problème en comprenant comment fonctionne ces fonctions pour que plus jamais je sois embêter quand je souhaite combiné une recherche à plusieurs critères.
J'ai donc fais un petit modèle pour mieux décrire le résultat que j'aimerais obtenir, mais souhaiterais la comprendre aussi.
Merci pour votre aide.

Cordialement
 

Pièces jointes

  • Test.xlsx
    10.9 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gaby,
Avec un Recherche (V ou H ) ou un Index Equiv, j' échoue quand il s'agit d'un multilignes, multicolonnes.
Même en formule matricielle, je n'ai trouvé aucune solution.
En attendant une solution plus "esthétique", on peut y arriver en ajoutant une ligne et une colonne pour repérer L et C qu'on exploite ensuite par un Index.
( ensuite en VBA ce serait plus simple si vous acceptez les macros. :) )
Add on : "Just for the fun" si vous acceptez les macros, voir la seconde PJ avec la fonction perso :
VB:
Function ValeurCherchée(Chaine$, Plage As Range)
    Dim T, L%, C%: Application.Volatile
    T = Plage
    For L = 1 To UBound(T)
        For C = 1 To UBound(T, 2)
            If T(L, C) = Chaine Then
                ValeurCherchée = T(L + 1, C)
                If ValeurCherchée = 0 Then ValeurCherchée = ""
                Exit Function
            End If
        Next C
    Next L
    ValeurCherchée = ""
End Function
 

Pièces jointes

  • Test (12).xlsx
    11.2 KB · Affichages: 3
  • Test (12).xlsm
    16.6 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour gaby66, sylvanu,

A condition qu'il n'y ait qu'une valeur égale à B8 dans le tableau, formule matricielle en D8 :
Code:
=DECALER(A1;PETITE.VALEUR(SI(G7:M15=B8;LIGNE(G7:M15));1);PETITE.VALEUR(SI(G7:M15=B8;COLONNE(G7:M15));1)-1)
A valider par Ctrl+Maj+Entrée.

A+
 

Pièces jointes

  • Test(1).xlsx
    11.3 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bon s'il y a plusieurs valeurs égales à B8 dans le tableau utiliser cette formule (non matricielle) en D8 :
Code:
=INDIRECT(ADRESSE(EQUIV(B8;DECALER(A:A;;col-1);0)+1;col))
col étant le nom défini par cette formule :
Code:
=PETITE.VALEUR(SI(Feuil1!$G$7:$M$15=Feuil1!$B$8;COLONNE(Feuil1!$G$7:$M$15));1)
 

Pièces jointes

  • Test(3).xlsx
    12 KB · Affichages: 5

gaby66

XLDnaute Occasionnel
Autre solution avec ADRESSE et INDIRECT :
Code:
=INDIRECT(ADRESSE(PETITE.VALEUR(SI(G7:M15=B8;LIGNE(G7:M15));1)+1;PETITE.VALEUR(SI(G7:M15=B8;COLONNE(G7:M15));1)))


Merci Messieurs,
Je vais opter plus pour cette version, car la version VBA n'est pas utile dans mon cas, celle la je la comprends nettement mieux. Et celle avec le nom définie je la comprends un peu moins pour être honnête lol, je m'y repencherais un prochain jour si j'ai plusieurs valeurs égales.
Merci en tous cas, ça fait le job. ;)😃👍👍👍
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV