Concaténer pour écrire une matrice dans formule INDEX
Bonjour à tous,
Je suis dessinateur industriel et je cherche à faire une nomenclature (liste de toutes les pièces et assemblages qui composent une machine). Dans mon premier onglet, AMPM BOM, il y a la structure complète de la machine. Dans l'onglet AMPM SOMMAIRE, il n'y a que les assemblages de la machine. Ce que j'aimerais faire c'est afficher en colonne A de l'onglet AMPM SOMMAIRE le numéro correspondant de l'onglet AMPM BOM en faisant une recherche via la colonne CODE ARTICLE.
Pour la formule : =INDEX('AMPM BOM'!$A$10:$G$10000;EQUIV(E10;'AMPM BOM'!$G$10:$G$10000;0);1) => jusque là pas de problème ça marche bien.
Le petit soucis c'est qu'un code article de sous ensemble peut apparaitre plusieurs fois dans une machine et que la formule ci-dessus s'arrête sur la première correspondance qu'elle trouve. Or, en colonne A de mon onglet AMPM BOM, la valeur ne sera pas identique entre la première fois que le code article sera trouvé et la deuxième fois, la troisième fois, etc.
Ce que j'aimerai donc faire c'est de modifier la fonction INDEX pour y faire varier la matrice 'AMPM BOM'!$A$10:$G$10000 en quelque chose du genre 'AMPM BOM'!$A/ma variable/$G$10000 ainsi que la sous fonction EQUIV(E10;'AMPM BOM'!$G$10:$G$10000;0) en quelque chose du genre EQUIV(E10;'AMPM BOM'!$G$/ma variable/:$G$10000;0) pour pouvoir décaler au fur et à mesure des recherches la première ligne de la matrice (INDEX) et de la plage de recherche (EQUIV).
Pour ce faire j'ai commencé un test et c'est là que ça se complique un peu. J'ai essayé d'éclater un peu les différentes étapes dans un premier temps, j'essaierai de tout regrouper après. En colonne J, le résultat de la fonction INDEX que j'ai mis au dessus avec les lignes en orange du problème du code article à rechercher deux fois. En colonne K, la ligne correspondante (dans la matrice donnée) sur l'onglet AMPM BOM. En colonne M il y a la ligne du début de ma matrice et en colonne N il y a le numéro de ligne correspondant au résultat de la sous fonction EQUIV(E10;'AMPM BOM'!$G$10:$G$10000;0).
Et là je cherche à concaténer en colonne L dans ma matrice 'AMPM BOM'!$A/ma variable/$G$10000 et dans ma plage de recherche EQUIV(E10;'AMPM BOM'!$G$/ma variable/:$G$10000;0). La formule donnerait un truc du genre : =INDEX("'AMPM BOM'!$A$"&CELLULE("contenu";N3)&":$G$10000";EQUIV(E4;"'AMPM BOM'!$G$"&CELLULE("contenu";N3)&":$G$107";0);1) mais lorsque j'utilise l'outil pour évaluer la formule, Excel traduit la concaténation comme suit : =INDEX("'AMPM BOM'!$A$10:$G$10000";EQUIV(E4;"'AMPM BOM'!$G$10:$G$107";0);1) => ce n'est pas très visible mais il y a des guillemets qui entourent l'expression pour la matrice et pour la plage de recherche et là du coup ça plante !
Bon je me suis peut-être trompé de méthodologie pour arriver à mes fins mais là je suis bloqué ! Help !
Merci
Bonsoir,
je n'ai pas tout compris, mais je sais une chose, et ce n'est pas forcément la meilleur, c'est qu'une adresse de cellule issue d'un concatener, n'est pas considérée comme une adresse dans les formules et ça ne marche pas. Pour que cela fonctionne il faut utiliser INDIRECT qui se "rendra" indirectement à l'adresse concatenée :
en L4 : =INDEX(INDIRECT("'AMPM BOM'!$A$"&N3&":$G$10000");EQUIV(E4;INDIRECT("'AMPM BOM'!$G$"&N3&":$G$107");0);1)
Maintenant, je ne peux pour l'instant aller plus loin car je ne comprend pas tout comme le $G$107 ? Et quand je copie colle la formule cela coince en ligne 9.
@ bientôt
LouReeD
Bonjour,
Merci d'avoir pris le temps de regarder mon problème !
Maintenant, je ne peux pour l'instant aller plus loin car je ne comprend pas tout comme le $G$107 ?
Euh oui j'avais juste fais un test avec NBVAL pour avoir la dernière ligne de mon tableau mais en vrai ça va finir en $G$10000 comme pour la matrice !
Et quand je copie colle la formule cela coince en ligne 9
Je suis en train de voir avec ta formule et effectivement j'ai l'impression que ça marche bien. Par contre il faut que je modifie un peu mes formules. Je repasse un peu de temps dessus et soit j'envoie la solution soit mon nouveau problème
Merci
Eurêka ! Enfin avec l'aide de LouReeD =)
Je joins le fichier si ça peut intéresser !
Merci du coup de main
Bonjour,
Merci pour ce retour "gagnant"!
@ bientôt
LouReeD