Je gère des affectations de ressources à des équipes. Chaque ressource peut être affectée selon un %tage de temps dans des équipes. La somme des affectations par ressource fait 100 %
Ex Jean Equipe 1 75%
Jean Equipe 2 25%
Pierre Equipe 1 30% Pierre Equipe 2 55%
Pierre Equipe 3 15% Marie Equipe 4 100%
Je cherche à trouver l’équipe principale de chaque ressource (celle où elle est le + affectée)
Ici
Jean Equipe 1
Pierre Equipe 2
Marie Equipe 4
Renvoyer l’équipe qui correspond à ce max et à ce prénom (attention si le max est présent 2 fois!)
Avec des formules Matricielles:
{=MAX((Prenoms=A9)*(Taux))} renvoie le max en ne tenant compte que des lignes dont le Prénom est la valeur en A9
{=INDEX(Equipes;EQUIV(B9;(Prenoms=A9)*(Taux);0))} cherche dans cette liste de valeurs la position du max et renvoie la même position dans la liste Equipes.
On est sur de renvoyer la valeur pour le bon prénom car on fait la recherche dans la liste de taux (Prenoms=A9)*(Taux) qui renvoie un taux de 0 pour tous les autres prénoms.
Colonne “G” =SIERREUR(GRANDE.VALEUR(Poucentage;LIGNE()-1);"") cherche les grandes valeurs de la plus grande à la plus petite dans la colonne “C”.
Ensuite =SIERREUR(INDEX(Tableau;EQUIV($G2;Poucentage;0);2);"") cherche dans le tableau “A, B, C” dans la colonne 2 donc “B” l’Équipe correspondante aux valeurs de la colonne “G”.
Pour finir =SIERREUR(INDEX(Tableau;EQUIV($G2;Poucentage;0);1);"") cherche dans le tableau “A, B, C” dans la colonne 1 donc “A” le nom correspondant aux valeurs de la colonne “G”.
Merci beaucoup également !
J’ai un peu de mal à m’y retrouver du fait que le tableau résultat (colonnes G à J) contient autant de lignes que le tableau source (A à C).
Je comprends que le résultat est dans les 4 premières lignes mais un peu compliqué à isoler .
Comment faire ?
Encore merci en tout cas !
Merci à nouveau
Juste un problème, je ne connais pas la notation matricielle
Comment faire pour définir les “variables” Prénoms, Equipes, etc. ?
Auriez vous un pointeur pour me guider ?
Encore merci !
En ce qui concerne le dernier fichier que j’ai fourni, pour avoir que les 4 premiers résultats, alors dans ce cas, je propose cette version avec une légère modif des formules colonnes “H, I, J” en utilisant la fonction =SI(ET(Valeur>0;Valeur<5);INDEX(Tableau;EQUIV(Valeur;Rang;0);colonne);rien)
Encore merci mais … ce n’est pas tout à fait ce que je recherche.
Je n’ai peut-être pas été assez clair.
Mon besoin était :
à partir du tableau des ressources avec %tages par équipe
d’alimenter un 2e tableau où les noms des ressources sont déjà renseignés et
'y ajouter juste le nom d’équipe où chaque ressource a le %tage le + élevé . Et en cas où il y a 2 pourcentages max identiques, ramener l’une des 2 équipes aléatoirement
Si vous pouvez m’aider …
Et si tu nous aidait a t’aider un peu en fournissant au moins un bout de fichier.
Car @DocteurExcel et moi t’avons fourni déjà beaucoup d’aide, sans l’ombre d’un début de fichier, et je ne pense pas continuer (en tout cas pour moi) a faire tout le travail sans que tu y mettes un peu du tien.
Hello
Pour les formules matricielles : il faut valider la formule avec ctrl+Maj+Entrée et non pas juste Entrée , ce qui fera apparaître des accolades autour de la formule
J’ai mis en place la formule dans mon fichier réél.
Cela fonctionne très bien .
Par contre, cela ralentit énormément la feuille.
Pourtant les volumes sont faibles (300 ressources et 500 lignes dans la table des pourcentages)
On dirait que la feuille recalcule tout en permanence.
Par exemple , tps d’attente de 15 secondes si on fait un filtre sur la table des ressources.
Y-a-t’il moyen d’améliorer ça (… sans désactiver les calculs automatiques) ?
Le format du fichier a-t-il une influence .? (il est sauvegardé en xslb pour une raison que j’ignore).
Je viens de voir ton nouveau message et le fichier que tu as fourni.
Voici une solution sans formules matricielles, qui ont tendance c’est vrai à ralentir les recalcules, quoi que pour 500 lignes, 15 secondes ça me parait bien long.
Bref, en “G3” =INDEX($C$3:$C$8;EQUIV(SOMMEPROD(MAX(($B$3:$B$8=$F3)*($D$3:$D$8)));$D$3:$D$8;0))
Petite amélioration pour 5000 lignes (voir dans le “Gestionnaire de noms”). =SIERREUR(INDEX(Équipe;EQUIV(SOMMEPROD(MAX((Prénom=$F3)*(Pourcentage)));Pourcentage;0));"")
Bonjour @DocteurExcel@mdo100,
A nouveau merci pour les réponses.
Au final, j’ai adopté la solution de @DocteurExcel. Mais pour améliorer les performances; j’ai réduit la taille des matrices au “strict minimum”.
Les tps sont raisonnables comme ça.
Encore merci
Etienne