Recherche avec résultat multiple affiché dans différentes colonnes

Bonjour,

Je vous remercie d'avance pour votre temps.

J'aimerais faire une "simple" recherche de référence dans une base de donnée. La complexité arrive car il y a plusieurs résultats et que j'aurais besoin que les résultats soient dans différentes colonnes avec 2 colonnes vides entre chaque résultat.

Je joins un fichier avec en ligne 9 de l'onglet 1 un exemple de résultat et quelques annotations.

J'explique le processus :

1 - Dans l'onglet 1 dans la colonne A je trouve la liste des références. (exemple : "A9") - Si il y a 0 dans la colonne E de l'onglet 1 c'est que la référence n'existe pas dans la base de donnée.

2 - Dans l'onglet 2 dans la colonne A je cherche la référence et je trouve les résultats dans le colonne D. (exemple : avec la référence en "A9" je trouve 5 résultats (D11 à D15))

3 - Dans l'onglet 1 je note chaque résultat dans les colonnes "OF 1" ; "OF 2" ; "OF ...". (exemple : Le résultat en D11 de l'onglet 2 dans la case F9 de l'onglet 1; D12 en I9; D13 en L9;...)

J'espère avoir été compréhensible. Je suis à votre disposition si vous avez des questions.

Merci.

edit : formule non aboutie

Voilà, un exemple de formule à coller en O6 de ta feuille "PdP vs Faisa 1-auto" et dans toutes les colonnes OF

=SI(NON(ESTNA(EQUIV($A6;Tableau5[Réf moteur];0)));SI(CNUM(DROITE(F$5;1))<=$E6;DECALER(INDIRECT("'Faisa 1'!"&ADRESSE(EQUIV($A6;Tableau5[Réf moteur];0)+1;1);VRAI);DROITE(F$5;1)-1;3;;);"");"")

à noter qu'en colonne E, tu peux aussi mettre ça, qui t'évite de rentrer les formules à la main sur quasi chaque ligne (??)

=SI(ESTNA(RECHERCHEV([@[Part Number]];'Nbr OF faisa 1'!A:B;2;0));0;RECHERCHEV([@[Part Number]];'Nbr OF faisa 1'!A:B;2;0))

Je n'ai rien compris, mais ça fonctionne !
Merci beaucoup pour ta rapidité et pour ton temps !

Maintenent je vais essayer de comprendre ^^

Bonne journée et merci encore :)

=EQUIV($A6;Tableau5[Réf moteur];0)

C'est un équivalent de rechercheV. Renvoie un message d'erreur #NA si aucune correspondance n'est trouvée, sinon renvoie le numéro de la ligne dans laquelle il trouve la 1ère occurrence de la valeur cherchée dans la plage.

=ESTNA(EQUIV($A6;Tableau5[Réf moteur];0))

Teste si le résultat de la fonction est un message d'erreur ou non et renvoie VRAI ou FAUX

=NON(ESTNA(EQUIV($A6;Tableau5[Réf moteur];0)))

Inverse les valeurs VRAI et FAUX (pour des raisons pratiques pour l'intégration dans la fonction SI ensuite)

Si tu te souviens bien, EQUIV te renvoie le numéro de la ligne sur laquelle il trouve la 1ère correspondance. Comme ton tableau est trié (ce qui est une très bonne idée), si un code est trouvé plusieurs fois, les autres occurrences suivantes seront juste à la suite.

=ADRESSE(EQUIV($A6;Tableau5[Réf moteur];0)+1;1)

On cherche donc toujours la ligne de la 1ère référence trouvée (j'ai dû mettre +1 pour que cela fonctionne, car il y a l'entête dans la plage). La fonction adresse renverra la référence de la cellule correspondante (sous forme $A$10 par exemple)

=INDIRECT("'Faisa 1'!"&ADRESSE(EQUIV($A6;Tableau5[Réf moteur];0)+1;1);VRAI)

Renvoie le contenu de la cellule qui se trouve dans la cellule trouvée par ADRESSE, dans la feuille Faisa 1

=DECALER(INDIRECT("'Faisa 1'!"&ADRESSE(EQUIV($A6;Tableau5[Réf moteur];0)+1;1);VRAI);DROITE(F$5;1)-1;3;;)

Permet de décaler la référence de la cellule dont on renvoie le résultat. DROITE(F$5;1)-1
Je décale de combien de ligne ? D'autant de lignes que le dernier chiffre de la cellule F5. (OF 1, OF2, OF3...) -1. Ceci permet de faire un décalage de 0 lignes pour l'OF1, de 1 ligne pour l'OF2, etc. C'est ce qui fait que la même fonction renvoie les bons résultats en faisant un copier-coller. Sinon tu aurais à changer ce paramètre dans chaque colonne.
3 permet ici de décaler le résultat de 3 colonnes et donc d'avoir le numéro d'OF.

SI(CNUM(DROITE(F$5;1))<=$E6;DECALER(INDIRECT("'Faisa 1'!"&ADRESSE(EQUIV($A6;Tableau5[Réf moteur];0)+1;1);VRAI);DROITE(F$5;1)-1;3;;);"")

Permet ici de ne prendre les valeurs et de faire le décalage que SI et uniquement SI le nombre de fois qu'on retrouve l'OF est inférieur ou égal au dernier chiffre de l'OF dans ton entête (OF 1, OF2...). Ainsi, si on trouve que 3 OF correspondent, il remplira les 3 premières colonnes et laissera les autres vides.
C'est cette partie que j'avais omise dans mon 1er post et qui donnait de faux résultats.

J'espère que c'est un peu plus clair. Ce n'est pas très facile à l'écrit.

Un vrai grand merci !!!
Il me faut un peu de temps pour digérer, mais tu m'as donné toutes les cartes pour comprendre.

Merci encore

Rechercher des sujets similaires à "recherche resultat multiple affiche differentes colonnes"