Rechercher valeurs suivant critères

Bonjour,

Je viens de nouveau sur ce forum car j'ai besoin d'aide. Je ne suis pas un expert des formules et y vient quand j'ai besoin de développer un fichier qui va m'aider à traiter les données reçues.

Je joins un fichier exemple afin d'ESSAYER d'expliquer ce à quoi je désire arriver.

J'ai dans un onglet ma DB et dans un autre onglet (ComRef) 2 tableaux(TabComRefA et TabComRefP) de références dans lequel je vais aller puiser info selon des critères définis.

2 principes différents dans mes tableaux de références. J'espère que le contenu de ceux-ci sera suffisamment explicite pour comprendre.

Dans ma DB, les colonnes importantes pour critères sont:

G: Mois

E: Product Target Segment

D: Selected Payment Method

F: Who1

H: Who2

La colonne O ("Recherche Com Who 1") doit afficher le résultat du tableau TabComRefA suivant critères de G E D F. Dans la colonne P, j'ai mis le résultat qui devrait normalement s'afficher en O avec une formule. En espérant que je ne me sois pas trompé car je deviens fou avec çà...

Les colonnes I J K L M N sont des colonnes avec des formules pour moi tenter de trouver l'info en O mais j'y arrive pas... Je suis pas assez cartésien pour y arriver lol.

La colonne S ("Recherche Com Who 2") doit afficher le résultat du tableau TabComRefP suivant critères de G E D H. Dans la colonne T j'ai mis le résultat qui devrait normalement s'afficher en S avec une formule. En espérant que je ne me sois pas trompé car je deviens fou avec çà...

Mes colonnes en Q et R sont des colonnes que j'ai mise avec des formules afin de tenter de parvenir à trouver réponse en S... MAis j'y arrive pas non plus.

J'ai effacé mes formules qui ne donnaient rien...

Merci pour votre aide. ET courage à ceux qui tenteront de me comprendre... J'avoue que je m'y perd également moi même dans les explications que je veux donner

5q-recherche-2.xlsx (17.93 Ko)

Bjr,

wise3 a écrit :

Merci pour votre aide. ET courage à ceux qui tenteront de me comprendre... J'avoue que je m'y perd également moi même dans les explications que je veux donner

ohmygod

je ne trouve pas l'équivalent des colonnes F et H dans les tableaux ...

Bon, j'ai fait le premier sans tenir compte de F car je n'ai pas trouvé la correspondance !! mais j'arrive bien au résultat demandé.

L'astuce consiste à

  • indiquer uniquement la borne inférieure dans le tableau, donc 0 ou 4, 0 ou 60% (attention à bien ordonner le tableau comme tu l'as fait !) ... ceci sera important pour la fonction RECHERCHEV(______;_____________;___;VRAI)
  • de créer un critère dans le tableau
  • de faire une RECHERCHEV avec le dernier paramètre à VRAI

Je te laisse reproduire sur le second ?

5q-recherche-2.xlsx (20.15 Ko)

Bonjour Steelson,

Mdr, pour l'image, cela représente bien la situation lol.

Merci de vous pencher sur mon problème en tout cas c'est sympa.

Alors j'avoue ne pas tout comprendre avec la colonne critère ajoutée.

Je vois par contre q'une valeur n'est pas correcte, voir en rouge

Enfin pour le "critère" colonne F et H. Ce que je voulais dire c'est que suivant la même valeur de ce qui est mis en colonne F, cela se rapportera au TabComRefA. Et suivant les même valeur de ce qui est mis en Colonne H, cela se rapportera au TabComRefP.

Je ne sais pas si cela est clair?

De mon côté j'essaye de comprendre vos formules.

Je vois par contre q'une valeur n'est pas correcte, voir en rouge

ok en effet, il faut changer de stratégie ...

L erreur est peut être due à ma formule qui calcule le pourcentage aussi non? Car je maitrise pas bien les nb si...

C'est tellement complexe à mettre au point (on y arrive quand même, encore que je ne sois pas au bout alors que j'ai déjà 4 lignes de formules) que c'est un des cas qui justifierait de faire une fonction personnalisée en VBA. Ce serait aussi un gage de maintenabilité.

Je vais donc travailler dans cette direction.

Vraiment sympa de m'aider

Va, j'espère pouvoir comprendre ensuite poir appliquer à mes propres tableaux

Voici, avec une simple fonction personnalisée ComWho1 ...

Function ComWho1(cetype As Range, nbre As Range, pourcent As Range) As Variant
    Application.Volatile
    ComWho1 = 0
    Dim tableauA As Variant
    tableauA = ThisWorkbook.Worksheets("ComRef").ListObjects("TabComRefA").DataBodyRange
    For i = LBound(tableauA) To UBound(tableauA)
        If cetype = tableauA(i, 1) And nbre >= tableauA(i, 2) And pourcent >= tableauA(i, 3) Then ComWho1 = tableauA(i, 4)
    Next
End Function

Il faut que le tableau de référence reste bien trié.

Maintenant je vais retravailler la formule directe ...

version formule

=INDEX(TabComRefA[Com];SOMMEPROD(MAX((TabComRefA[Type]=[@[Product Target Segment]])*([@[Nbr Product Target Segment identique pour même mois pour Who 1]]>=TabComRefA[Nbr])*([@[Pourcentage Par mois Dom pour Même tproduct Segment pour Who 1]]>=TabComRefA[Pourcent Dom])*LIGNE(TabComRefA[Type])))-LIGNE(TabComRefA[[#En-têtes];[Com]]))

explications selon besoin ...

Steelson,

merci pour votre temps

Je n'ai pas réussi à appliquer la version VBA mais la version formule a l'air de fonctionner

Je vais ESSAYER de la comprendre pour ESSAYER de l'appliquer à l'autre version. Même si je pense que je vais galérer lol. Mais si vous savez mettre la solution je suis partant aussi

Je ne mets pas tout de suite résolu car je vais certainement vous demander des explications

MERCI MERCI MERCI en tout cas Grace à vous une première étape est franchie dans l'élaboration de mon fichier

Edit, je viens d'ajouter des colonnes afin de corriger un prob que j'avais pour la colonne "Pourcentage Par mois Dom pour Même Product Target Segment pour Who 1".Suivant mes essais cela a l'air de fonctionner avec votre formule tel que je le souhaitais

Il "me" ( ) faut maintenant faire la même chose pour "Who 2" (H) mais suivant règle de TabRefComP qui est différentes de la règle de TabRefComA. Je dois sans doute trouver solution avec les AVEC et SANS...

Bonsoir,

revoici mon fichier où je tente de reprendre les valeurs pour Who2 suivant la règle de TabComRefP.

Mes colonnes de R à V sont crées pour tenter de trouver la réponse en W. MAis ne donnent peut-être par les bons éléments pour générer les critères. En colonne X, je mets le résultat que je devrais obtenir.

L'idée générale dans la formule et qui m'est venue après avoir fait la fonction VBA est la suivante :

Je cherche la dernière ligne qui satisfasse les conditions. Ceci se fait par la fonction

=SOMMEPROD(MAX((condition1)*(condition2)*(condition3)*LIGNE(____)))

Une fois cette ligne trouvée, je peux en déduire par INDEX la valeur recherchée dans le tableau référence.

Il faut que je retire de la ligne trouvée 1, ou plutôt la ligne où se trouve l'en-tête du tableau au cas où ce dernier serait plus bas dans une feuille.

Je vais regarder demain pour l'autre cas car une des conditions est non pas >= mais <=

Voici pour la seconde recherche

Bonjour Steelson

Dès que je rentre ce soir je teste cela.

Suis impatient

Merci merci merci

Voici pour la seconde recherche

Génial,

Cela fonctionne . J'ai juste corrigé un truc dans la formule car cela prenait en compte Who1 au lieu de Who2. Et j'ai ajouté une colonne de calcul "Nbre De Ligne Mois suivant Target Segment identique pour Who 2"

Demain je vais faire des test avec plusieurs lignes et vérifier mais je pense que c'est BON d'après mes quelques essais

Je vais pouvoir continuer la construction de mon fichier. Je ne dis pas que je vais pas revenir car j'ai encore plein de truc à faire lol...

Je créerai alors un autre topic s'il faut.

Merci encore.

Je mets mon fichier corrigé si en cas.

BRAVO BRAVO BRAVO et me permettrai de revenir vers vous pour la compréhension de la formule. J'avoue que je dois m'accrocher pour comprendre lol

MERCI MERCI MERCI pour ce temps passé qui va m' aider dans mes tâches

Parfait ! si tu es satisfait de cette réponse, clique sur le petit cœur, cela fera plaisir ...

J'ai savouré ce challenge ... il fallait surtout que je redore mon blason après le premier essai à côté de la plaque !

N'empêche qu'il fallait s'accrocher avec mes explications (Oh My God....)et le challenge a été FORMIDABLEMENT relevé

Merci encore et à une prochaine sans doute

Rechercher des sujets similaires à "rechercher valeurs suivant criteres"