XL 2016 compter des attribue de valeurs

fanfanus

XLDnaute Nouveau
Bonjour à tous,

Après de multiples tentatives, je bute sur la manière de réaliser une formule dans mon ficher excel.
J'ai un fichier comportant deux onglets : "choix des stage" et "DATA".
L'onglet choix des stages comprend la liste de tous les étudiants avec une liste déroulante leur permettant de choisir leurs sept stages. Cette liste est cherchée dans l'onglet "DATA".
Pour chacun des stages listés dans l'onglet DATA, j'ai donné des attributs dans différentes colonnes : "types de stage", département,...

Mon objectif est, pour un étudiant de pouvoir compter le nombre de "type de stage" qu'il a réalisé. C'est à dire que si il sélectionne le stage "St Quentin" et que ce stage est de type "A", alors ma formule me compte 1 stage A.

J'ai pensé utiliser la fonction nbval, bdnb, ou encore du ET/si etc... mais je ne parviens pas à trouver la solution.(--> EX cellule N7 dans le fichier joint).

Pourriez-vous me guider pour choisir la fonction/formule adéquate ?

Merci d'avance.
 

Pièces jointes

  • choix_stages_test.xlsx
    34.8 KB · Affichages: 13

Dugenou

XLDnaute Barbatruc
Bonjour,
je crains ce soit assez complexe : quand un étudiant choisit CH St Quentin : comment sait-on si c'est le stage SSR ou MCO ou bien est-ce que c'est les deux ?
Il faudrait concaténer les résultats des 7 stages pour rechercher ensuite dans les 7 types si la donnée existe.
Peut être faudrait-il donner aux étudiants la possibilité de choisir eux-même le type de stage en plus de l’établissement.

Cordialement
 

fanfanus

XLDnaute Nouveau
Bonjour,

J'ai bien réfléchi et j'ai fini par trouver une solution !

Code:
=(NBCAR(CONCATENER(SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!C7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!D7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!E7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!F7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!G7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!H7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!I7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!J7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!K7;DATA!$A$3:$A$100;0));"")))-NBCAR(SUBSTITUE(CONCATENER(SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!C7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!D7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!E7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!F7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!G7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!H7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!I7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!J7;DATA!$A$3:$A$100;0));"");" ";SIERREUR(INDEX(DATA!$B$3:$B$100;EQUIV('CHOIX DES STAGES'!K7;DATA!$A$3:$A$100;0));""));"MCO";"")))/NBCAR("MCO")

Il y a certainement moyen de le simplifier mais ça marche.
Une partie récupère les correspondances.
Une autre compte les occurrences de mots
 

Discussions similaires

Réponses
8
Affichages
769