Extraire des données d'une liste selon un critère

Fermé
louise - 27 juin 2013 à 11:35
 louise - 27 juin 2013 à 16:52
Bonjour,

j'ai un problème de formule.

Dans un onglet "MV Daten" j'ai sur la colonne B des numéros d'immeubles.
Dans la colonne D à coté j'ai les noms des locataires (un locataire peut avoir plusieurs appartements dans le même immeuble, il est donc important de garder les doublons).

Je vais donc avoir plusieurs lignes pour l'immeuble 38 (donc dans la colonne B, le nombre 38 va apparaitre une vingtaine de fois, car j'ai 20 appartements dans cet immeuble - pas forcement des locataires différents).
J'ai créer plusieurs onglets pour chaque immeuble et la cellule D3 dans l'onglet des immeubles (donc pas "MV Daten") nous donne le numéro de l'immeuble et je souhaiterais avec une formule (sans macro) extraire dans l'onglet "immeuble 38" (par ex.) le nom de tous les locataires en concervant l'ordre et les doublons.

Il faut savoir que dans l'onglet "MV Daten" j'ai environ 2500 lignes (locataires) et que pour l'immeuble 38 j'en ai que 20. Par conséquence la fonction SI ne me convient pas car mon onglet "immeuble 38" ne doit pas contenir 2500 lignes. RechercheV ne prend pas en compte les doublons et prend une valeur unique.

Est-ce que quelqu'un peut m'aider?
Merci beaucoup
Louise


A voir également:

6 réponses

g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
27 juin 2013 à 12:58
Bonjour,

Feuille MV Daten tu nommes le colonne B ref et la colonne D val
Sur les feuilles immeuble, dans la cellule de ton choix tu copies la formule matricielle à dérouler vers le bas après validation

{=INDEX(val;PETITE.VALEUR(SI(ref=$D$3;LIGNE(INDIRECT("1:"&LIGNES(ref))));LIGNES($1:1)))}

Pour valider une fonction matricielle utiliser les touches Ctrl+Maj+Entrée, ce qui ajoutera les crochets {} qui ne doivent pas être ajoutés manuellement.

et si tu veux éviter les #NOMBRE! dans les cellules où il n'y a pas de réponse valide tu copies la formule matricielle à dérouler vers le bas après validation

{=SI(ESTERREUR(INDEX(val;PETITE.VALEUR(SI(ref=$D$3;LIGNE(INDIRECT("1:"&LIGNES(ref))));LIGNES($1:1))));"";INDEX(val;PETITE.VALEUR(SI(ref=$D$3;LIGNE(INDIRECT("1:"&LIGNES(ref))));LIGNES($1:1))))}

Cordialement.
1