Récupérer données d'une cellule d'une colonne avec une même occurence

regle

XLDnaute Nouveau
Bonjour,

Voilà je voudrais récupérer à la suite les données des cellules d'une colonne qui ont la même occurrence. Pour plus de clarté, je vous invite à regarder mon exemple.

Je ne sais pas si je suis suffisamment clair dans mes explications.

Merci par avance pour votre aide précieuse.
 

Pièces jointes

  • Classeur1.xls
    16 KB · Affichages: 36
  • Classeur1.xls
    16 KB · Affichages: 36

regle

XLDnaute Nouveau
Re : Récupérer données d'une cellule d'une colonne avec une même occurence

Merci pour cette réponse,

c'est presque ça en fait, il faut juste que la formule reprenne dans l'ordre dans lequel les données sont inscrites dans la feuille "Données" sans les trier par ordre décroissant.

Au passage pourriez-vous m'expliquer la logique de la formule, je ne comprends pas tout et notamment le "A1".

Cordialement,
 

tototiti2008

XLDnaute Barbatruc
Re : Récupérer données d'une cellule d'une colonne avec une même occurence

Re,

Alors...

Code:
=SI(ESTERREUR(INDEX(Donnees!$E$1:$E$29;PETITE.VALEUR(SI((Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)<>0;(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29));LIGNE(A1))));"";INDEX(Donnees!$E$1:$E$29;PETITE.VALEUR(SI((Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)<>0;(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29));LIGNE(A1))))

C'est une formule matricielle, il faudra la valider avec Ctrl+Maj+Entrée
La formule est organisée comme ça :
Code:
=SI(ESTERREUR(Formule1);"";Formule1)
simplement pour éviter les messages d'erreurs quand toutes les valeurs ont été trouvées

passons à "Formule1" :
Code:
=INDEX(Donnees!$E$1:$E$29;PETITE.VALEUR(SI((Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)<>0;(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29));LIGNE(A1)))

le coeur de cette formule est constitué par
Code:
(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)
qui renverra une matrice avec :
- le numéro de la ligne si les 2 codes sont trouvés
- ou 0 dans le cas contraire
La fonction SI sert à changer les 0 en FAUX, ainsi PETITE.VALEUR ne s'occupera que des numéros de lignes et pas des 0

donc
Code:
SI((Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)<>0;(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29))
renverra une matrice avec :
- le numéro de la ligne si les 2 codes sont trouvés
- ou FAUX dans le cas contraire

PETITE.VALEUR va nous permettre de prendre la valeur la plus petite, puis la suivante etc... pour parcourir l'ensemble des réponses dans l'ordre des lignes
LIGNE(A1) en 2ème argument de PETITE.VALEUR sert simplement à générer les 1, 2, 3 pour prendre la plus petite, la 2ème plus petite, la 3ème... etc

Code:
PETITE.VALEUR(SI((Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29)<>0;(Donnees!$A$2:$A$29=Enquete!$B$1)*(Donnees!$C$2:$C$29=Enquete!$B$2)*LIGNE(Donnees!$E$2:$E$29));LIGNE(A1))

La fonction INDEX permet de récupérer dans la colonne des n° de base (colonne E feuille Données) la valeur de la ligne trouvée

Voila :D
 

tototiti2008

XLDnaute Barbatruc
Re : Récupérer données d'une cellule d'une colonne avec une même occurence

Bonjour à tous,

je ne comprends pas tout et notamment le "A1".
Juste le "A1" ça représente quoi exactement ?

une formule de 6 lignes et tout ce qui te préoccupe c'est A1 :D
LIGNE(A1) en 2ème argument de PETITE.VALEUR sert simplement à générer les 1, 2, 3 pour prendre la plus petite, la 2ème plus petite, la 3ème... etc
 

Discussions similaires

Réponses
10
Affichages
273
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi