BDLire vs RechercheX - bloqué

Bonjour à tous,

Je vous contacte car je reprends une fiche Excel que l'un de mes collègues à fait il y a des années de ça (bien avant Office365).

Il avait utilisé une fonction BDLIRE pour aller chercher des données dans un tableau et choisir un composant en fonction d'un critère.

Il avait créé des listes de données (Base_moteurs par exemple)

image

Or aujourd'hui, et connaissant mal cette fonction, j'ai essayé de l'adapter à ma façon de travailler.

Personnellement je préfère travailler avec des tableaux nommés plutôt qu'avec des listes car c'est bien plus dynamique au niveau modifications.

Cependant, j'ai essayé de retranscrire cette fonction à mes tables, mais je n'arrive plus à la faire fonctionner. Mon résultat est un erreur #VALEUR!.

J'ai supposé que cette fonction a du mal avec les tables ou que je l'utilise vraiment mal, bien que je pense l'avoir bien comprise... 🤷🏻‍♂️

image

(Oui j'ai retiré le symbole supérieur et inférieur dans les FORCES, mais j'ai essayé avec et j'ai le même résultat...)

J'ai pensé à la remplacer par un RechercheX que j'ai plus l'habitude d'utiliser mais c'est plus complexe à mettre en place car je dois avoir comme critère :

- La marque

- La force mini

- La force maxi

Est-ce que l'un d'entre vous pourrait me dire comment utiliser BDLIRE avec les tables s'il vous plait ?

Et si éventuellement vous arrivez à me dire comment imbriquer des RechercheX pour trouver la donnée dont j'ai besoin en respectant la plage de force mini et maxi mais en tenant compte de la marque aussi.

Je continue mes recherches de mon côté et je reposte une réponse si j'ai quelque chose.

Merci d'avance pour votre aide 😁

Bonjour,

C'est plutôt de cette fonction dont vous auriez besoin Fonction Excel : FILTRE

Cependant un point : les opérateurs ">/</=" vont poser problème. A vrai dire s'ils sont toujours constants (ce qui serait logique si j'ai bien compris : on prend une Fmin qui sera toujours inférieure, et une Fmax toujours supérieure) on peut directement les incorporer dans la formule. Sinon il va peut etre falloir utiliser indirect.

Si vous souhaitez la formule veuillez joindre un fichier "test", car elle dépendra de vos noms de tableaux.

Un dernier point, FILTRE comme son nom l'indique, filtre, et elle renvoie parfois plusieurs résultats s'il y a plusieurs correspondances. Pour cela il vaut mieux l'utiliser en dehors d'une table structurée autrement on aura une erreur #SPILL. Mais ca peut être utile si vous voulez faire une recherche sans rentrer tous les critères.

Bonjour

Ces fonctions sont vraiment anciennes et mal pratiques car la liste des paramètres devient vite peu lisible.

Cela ne m'étonne pas que Microsoft n'ai pas adapté ces fonctions aux nouveautés (depuis 17 ans quand même) comme les tableaux structurés

Tu devrais plutôt t'orienter vers la fonction FILTRE : exemple

=FILTRE(Base_moteurs;(Base_moteurs[Marque]="OLI")*(Base_moteurs[Vitesse]=900)*(Base_moteurs[Force Mini]<100000))

ou bien vers une requête PowerQuery plus souple concernant le nombre de critères...

EDIT : j'ai eu un coup de fil pendant que je répondais et je viens de voir la réponse de saboh12617

Merci pour vos réponses, je vais regarder du côté de la fonction Filtre que je ne connais pas du tout.

Je vous fourni malgré tout un fichier EXCEL pour essayer d'expliquer mon besoin.

J'ai fait une partie "listes" à gauche et "tables" à droite (que je préfère).

La fonction de RechercheX est si vieille que ça ? ^^ Je la trouve pratique mais dans mon cas j'ai vraiment du mal.

Merci pour votre rapidité.

RE

Si seulement 2 critères

=RECHERCHEX(TAB_SELECTION[VALEUR MAXI]&H11;TAB_PIECES[VALEUR MAXI]&TAB_PIECES[MARQUE];TAB_PIECES[REFERENCE];;1)

EDIT : cependant si tu veux la pièce R012 il faut rentrer aussi le mini afin de d'avoir cette réponse, sinon tu as 1ère valeur répondant aux critères

BDLIRE ne peux fonctionner que si une seule réponse correspond aux critères et le cas utilisé pour l'exemple ne fonctionne pas car plusieurs <= 6000

Bonjour à tous !

Une autre approche (légèrement différente) :

=PRENDRE(FILTRE(TAB_PIECES[REFERENCE];(TAB_PIECES[MARQUE]=H11)*(TAB_PIECES[VALEUR MAXI]>=I11));1)

Bonjour à tous de nouveau,

Je voudrai bien voir la requete PQ avec gestion des paramètres manquants (= ignorés) par pure curiosité.

@Beoden, RECHERCHEX n'est pas "vieux", il a été introduit en même temps que FILTRE sur les versions 2021+.

Simplement c'est une fonction de recherche dans 1 liste pour donner une correspondance dans 1 autre liste, là où vous a priori, voulez filtrer une BDD sur un certain nombre de critères. La fonction FILTRE est faite pour cela. C'est simplement utiliser l'outil le plus adapté au problème.

Oui en effet @saboh12617, en la manipulant j'ai compris qu'elle était destinée à ce genre de cas. Merci pour la précision :)

@JFL, merci pour la réponse, je me rapproche de ce que je cherche, mais il me prend la référence de la marque lorsque j'utilise cette fonction.

J'ai essayé d'intégrer un rechercheX dans la dernière partie de la fonction pour rechercher la première valeur inférieur à ma valeur sélectionnée, sans succès. Je continue mes recherches ^^

=PRENDRE(FILTRE(TAB_MB[Référence];(TAB_MB[Marque]=TAB_MB_SELECT[Marque])*(RECHERCHEX(TAB_MB_SELECT[Force mini];TAB_MB[Force max];TAB_MB[Force max];;1)));1)

Merci aussi à vous @78chris, je m'approche aussi du but, mais je tombe sur la valeur précédente avec un -1 en fin de fonction (et R004 avec 1 en fin de fonction ce qui n'est pas bon).

=RECHERCHEX(TAB_SELECTION[MARQUE2]&TAB_SELECTION[VALEUR MAXI];TAB_PIECES[MARQUE]&TAB_PIECES[VALEUR MAXI];TAB_PIECES[REFERENCE];;-1)

Bonjour à tous de nouveau !

J'ai bien peur de ne pas vous suivre....

La référence cherchée est bien dépendante d'une marque et d'une valeur maxi, non ?

Votre souci est lié uniquement aux références des plages ?

  1. B3, C3 et Liste_Pieces
  2. N3, O3 et TAB_PIECES

Mon souci est bien lié aux références, oui.

Ce que je souhaite avoir comme résultat, c'est que lorsque j'ai sélectionné ma marque et entré une valeur arbitraire, ma formule me donne la référence correspondante à la plage "VALEUR MINI / VALEUR MAXI"

Dans mon cas, j'ai une MARQUE2 et j'ai entré une valeur 6000.

Je veux que ma fonction aille chercher dans toutes les lignes "MARQUE2" de ma table générale (Liste_Pieces ou TAB_PIECES) et qu'elle me sorte la référence avec la plage dans laquelle se situe ma VALEUR arbitraire.

Donc dans mon cas ici, ayant entré 6000, je veux qu'elle me sorte la MARQUE2 qui a des valeurs mini et maxi allant de 5200 à 6440 car 6000 se situe au milieu, soit la référence R012.

Bonjour à tous de nouveau !

Ma proposition retourne, a priori, le résultat attendu....

image

J'ai simplement modifié les références des éléments cherchés (N3 et O3)

@JFL En effet, j'ai du m'y perdre à force de manipuler... J'ai bien le résultat escompté et je vais pouvoir travailler sur cette fonction de FILTRE qui est bien pratique pour les DB.

Merci beaucoup pour votre aide et désolé pour la temps de compréhension

Bonjour à tous de nouveau !

Me voilà pleinement rassuré....

Je vous remercie de ce retour.

RE

Quand je parlais de vieilles fonctions je faisais référence aux BD...

Rechercher des sujets similaires à "bdlire recherchex bloque"