Recherchev de plusieurs cellules aux m critèr

[Résolu/Fermé]
Signaler
Messages postés
4
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
29 mai 2012
-
Messages postés
17595
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
-
Bonjour,

Dans un tableau sous forme de base de données je renseigne des personnes selon leur groupe (A, B, C ou D) et part entités. Il peut y avoir de 1 à 4 personnes par groupe :
Entité 1 Gpe A Mr a
Entité 1 Gpe A Mr b
Entité 1 Gpe B Mr c
Entité 1 Gpe C Mr d
Entité 1 Gpe C Mr e
Entité 1 Gpe C Mr f
Entité 2 Gpe A .....

Et je souhaite mettre ca en forme dans un tableau par entité mais je ne sais pas comment lui dire de de rechercher tous les Gpe A de l'entité 1 sachant que d'une entité à l'autre ce n'est pas le même nombre de personnes. J'imagine qu'il faut incrémenter une liste ...

Merci de votre aide.

8 réponses

Messages postés
17595
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 776
Salut,

je te conseille de nommer les plages par colonne, exemple si tu as en colonne F tes code (A, B, C etc ...) nomme la plage de données Code
si tu veux extraire les noms exemple colonne C, nomme cette plage Nom
en G3 par exemple tu saisis tes critères de rechercher ou crée une liste de validation A, B, C etc ...
colle cette formule matricielle qu'il faudra confirmer en combinant en même temps les 3 touches Ctrl, Shift(touche majuscule) et Entrée
=INDEX(Nom;PETITE.VALEUR(SI(Code=$G$3;LIGNE(INDIRECT("1:"&LIGNES(Code))));LIGNES($G$3:$G3)))
pour confirmer cette formule matricielle soit tu active la cellule contenant la formule et clic dans la barre des formule et clic sur les 3 touches en même temps ou double clic dans la cellule contenant la formule et clic sur les 3 touches. si tu fais bien la formule se placera entre {}
et ressemblera à {=INDEX(Nom; PETITE.VALEUR(SI(Code=$G$3;LIGNE(INDIRECT("1:"&LIGNES(Code))));LIGNES($G$3:$G3)))}
incrémente cette formule vers le bas
si tu veux rechercher la liste des valeurs qui se trouve en D par exemple nomme cette plage ex. Montants, modifie simplement la formule et n'oublie pas de confirmer la matricielle
=INDEX(Montants;PETITE.VALEUR(SI(Code=$G$3;LIGNE(INDIRECT("1:"&LIGNES(Code))));LIGNES($G$3:$G3)))
Messages postés
4
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
29 mai 2012

Merci pour ton aide mais je ne comprends pas comment la formule peut fonctionner car je travaille sur 2 onglets : 1 onglet base de données (listing des personnes avec leur groupe et leur entité) et 1 autre onglet de restitution de l'information par entité.

Bref je t'enverrai bien mon fichier mais je ne vois pas d'icone pour les pièces jointes ...
Messages postés
17595
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 776
Re,

la formule fonctionne parfaitement grace aux plages nommées. Pour joindre ton fichier avec ce lien

https://www.cjoint.com/

clic sur le lien/Parcourir pour sélectionner ton fichier/Créer le lien et colle le lien généré dans un post
Messages postés
4
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
29 mai 2012

Messages postés
17595
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 776
Messages postés
4
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
29 mai 2012

merci beaucoup pour vos réponses
Messages postés
17595
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 776
Re,

Je suis de retour, il est également possible de compléter la formule pour qu'elle prenne en compte la colonne Entity et Group.
Enfin tu sais que c'est possible
Messages postés
5696
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
18 octobre 2021
664
Bonjour

Premièrement compter le nombre de personne dans le groupe
la formule ci-dessous compte en B20:B100 le nombre de fois qu'elle trouve par exemple goupe 1 (=B3)

=NB.SI($B$20:$B$100;$B$3)

cette autre formule contrôle si le numéro de la ligne est inférieur à la valeur chercher précédement, puis cherche l'index correspondant dans B20:H100 et ramène la valeur correspondantesur la ligne en colonne 2 et n'affiche rien si c'est faux



=SI(LIGNE()-5<=$B$5;INDEX($B$20:$H$100;EQUIV($B$3;$B$20:$H$100)-$BC$5+LIGNE()-5;2);"")

avec un exemple ce serait plus facile

https://www.cjoint.com/?3EDlENc1uwR