Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Moyenne pondéré avec plusieurs critéres

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

toto2703

XLDnaute Nouveau
bonjour,

J'ai réussi à réaliser une moyenne pondéré avec 1 critéres.

Voir ma pièce jointe.
Regarde la pièce jointe Fichier Evaluation pour aide V6 - ok (1).xlsx

Les pondérations sont disponibles dans la feuille coeff groupe.
Il y a des domaines de 1 à 11 composés chacun de ss domaines.
Les pondérations son différentes suivants le groupe.

J'ai réussi à faire la moyenne pondéré pour l'onglet moy pond profil type.
Cette moyenne pondéré utilise les notes des profil types ( disponible dans l'onglet profil type) et les pondérations
de la feuille coeff groupe. Je fais donc la moyenne de chaque domaine avec le critére qui vérifie si le ss domaine xx appartient
au domaine A, B etc.

Maintenant je voudrais faire la même chose pour l'onglet moy pond individu present mais en rajoutant un critére en plus.
Un individu appartenant à un groupe je voudrais que le deuxième critére choisisse la bonne ligne de pondération dans coeff groupe
suivant l'appartenance de l'individu à un groupe. ( la moyenne pondere de l'individu est calculée avec eval individu present)

Merci d'avance
 
Re : Moyenne pondéré avec plusieurs critéres

Bonjour

Pour ma part je ne comprends rien à la question posée. Je ne comprends même pas de quels nombres tu veux faire la moyenne (pondérée ou pas)
Au lieu de faire un classeur avec plein d'onglets, de domaines, sous domaines, groupes et autres, prépare un exemple SIMPLE qui ILLUSTRE ta demande et surtout mets des valeurs et indique sur quelques lignes quel résultat tu attends pour qu'on puisse tester des solutions efficacement.
 
Re : Moyenne pondéré avec plusieurs critéres

Mea culpa , voila le fichier en plus simple.
Regarde la pièce jointe Fichier Evaluation pour aide SIMPLIFIE.xlsx

Je souhaite utiliser les pondérations du tableau PONDERATION GROUPE /SS DOMAINE
et le tableau NOTE pour calculer les moyennes pondérées dans le tableau MOYENNE PONDEREE.

Je souhaiterai qu'il y ait 2 conditions dans la formule calculant la moyenne pondéré:
- L'une permettant de "sélectionner" seulement les SS domaine appartenant au Domane concerné
- La deuxième permettant de "sélectioner" la bonne ligne de Pondération suivant l'appartenance d'un individu à un groupe.

Exemple:
Pour la moyenne pondéré de l'individu 1 (Note Ligne 11) dans le domaine 1:

SS domaine à prendre en compte : 1 , 2 et 3 ( colonne B , C , D du tableau Pondération et C, D ,E de Note)
Pondération à prendre en compte ligne du groupe 1 ( Ligne 4)

Soit : ( 1 x 1 + 2 x 1 + 1 x 1 ) / ( 1+2+1) = 1 ( Ligne 7 , colonne K)

2eme exemple pour individu 2 ( Note ligne 12) dans le domaine 2:
SS domaine : 4 et 5 ( Colonne E,F de pondération et F,G de Note)
, Ligne du groupe 2 pour les pondération ( Ligne 5)

Soit : Moyenne pondérée : ( 2 x 3 + 1 x 1 ) / ( 2 + 1 ) = 2.3 ( arrondi) ( Ligne 8, colonne L)

J'espère que c'est mieux expliqué.

Merci
 
Re : Moyenne pondéré avec plusieurs critéres

Bonjour toto2703, salut Misange,

Votre 1er fichier montre qu'il y a beaucoup de Groupes, Individus, Domaines.

Plutôt que de se prendre la tête avec des formules matricielles peu simples, utilisons cette fonction VBA :

Code:
Option Compare Text 'la casse est ignorée

Function MOYPOND(Groupe As Range, Individu As Range, _
  Domaine As Range, TabNote, TabPond)
MOYPOND = ""
If Groupe = "" Or Individu = "" Or Domaine = "" Then Exit Function
Dim c As Range, Ln&, Lp&, col%, s!, d!
'---ligne des notes---'
For Each c In TabNote.Columns(1).Cells
  Ln = Ln + 1
  If c = Groupe And c(1, 2) = Individu Then Exit For
Next
If c Is Nothing Then Exit Function
'---ligne des coefficients de pondération---'
For Each c In TabPond.Columns(1).Cells
  Lp = Lp + 1
  If c = Groupe Then Exit For
Next
If c Is Nothing Then Exit Function
'---calculs---
For Each c In TabNote.Rows(1).Cells
  col = col + 1
  If c = Domaine Then
    If TabNote(Ln, col) <> "" Then
      s = s + TabNote(Ln, col) * TabPond(Lp, col - 1)
      d = d + TabPond(Lp, col - 1)
    End If
  End If
Next
If d Then MOYPOND = s / d
End Function
Formule en K7 à copier sur la plage K7:L9 :

Code:
=MOYPOND($I7;$J7;K$5;$A$8:$G$13;$A$2:$F$5)
Bien la comprendre pour l'adapter au fichier réel.

Fichier joint.

Nota : attention, les noms en D2 et E8 n'étaient pas corrects... Je les ai corrigés.

A+
 

Pièces jointes

Re : Moyenne pondéré avec plusieurs critéres

Merci job75,

Je regarde ça.

Je m'en suis sortis avec une formule du type :
Si ( groupe individu = groupe 1 ; Somme prod ..../ Somme.Si ( ... pondération groupe 1); Si ( groupe individu = groupe 2 ; Somme prod ..../ Somme.Si ( ... pondération groupe 2); ......
;Si ( groupe individu = groupe 13 ; Somme prod ..../ Somme.Si ( ... pondération groupe 13))))))))))))))

Mais j'ai énormément de SI imbriqué afin de choisir la bonne ligne de pondération par rapport au groupe.

Donc ta solution me parait plus simple. Je teste ça et surtout j'essai de comprendre.
 
Re : Moyenne pondéré avec plusieurs critéres

Re,

Cette version (2) utilise des tableaux VBA (matrices), l'exécution est plus rapide :

Code:
Option Compare Text 'la casse est ignorée

Function MOYPOND(Groupe, Individu, Domaine, TabNote, TabPond)
MOYPOND = ""
If Groupe = "" Or Individu = "" Or Domaine = "" Then Exit Function
Dim Ln&, Lp&, col%, s!, d!
TabNote = TabNote: TabPond = TabPond 'matrices, plus rapides
'---ligne des notes---'
For Ln = 1 To UBound(TabNote)
  If TabNote(Ln, 1) = Groupe And TabNote(Ln, 2) = Individu Then Exit For
Next
If Ln > UBound(TabNote) Then Exit Function
'---ligne des coefficients de pondération---'
For Lp = 1 To UBound(TabPond)
  If TabPond(Lp, 1) = Groupe Then Exit For
Next
If Lp > UBound(TabPond) Then Exit Function
'---calculs---
For col = 1 To UBound(TabNote, 2)
  If TabNote(1, col) = Domaine Then
    If TabNote(Ln, col) <> "" Then
      s = s + TabNote(Ln, col) * TabPond(Lp, col - 1)
      d = d + TabPond(Lp, col - 1)
    End If
  End If
Next
If d Then MOYPOND = s / d
End Function
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…