Excel 2010 : calculer somme, multiple feuille

Bonjour

Désolé pour cette question, je pense que c'est d'un niveau faible et qu'il doit y a voir des sujets, mais je ne sais même pas par où commencé et quoi chercher pour avancer.

J'ai 3 feuilles :

Feuille1 : J'ai une liste de membres, chaque membre a une note associée

Feuille 2 : la liste de membre, chaque membre appartient à un groupe

Feuillle 3 : je dois calculer la moyenne des notes des membre de chaques groupe

Je ne trouve même pas comment je vais proceder pour faire cela, je bloque sur le fait de connaitre à quel groupe appartienne les membres.

J'ai fais un fichier excel simple avec peu de donnée pour commencé, si quelqu'un peut m'aider, ou me donner une piste pour pouvoir commencer par quelque chose.

Merci

22test.xlsx (8.94 Ko)

Bonsoir Gardou, bonsoir le forum,

Par formule je ne sais pas faire... Ton fichier modifié avec le code ci-dessous :

Sub Macro1()
Dim N As Worksheet 'déclare la variable N (onglet des Notes)
Dim G As Worksheet 'déclare la variable G (onglet des Groupes)
Dim M As Worksheet 'déclare la variable M (onglet des Moyennes)
Dim TC1 As Variant 'déclare la variable TC1 (Tableau des Cellules 1)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Integer 'déclare la variable L (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TG() As Variant 'déclare la variable TG (Tableau des Groupes)
Dim NM As Byte 'déclare la variable NM (Nombre de Membres)
Dim T As Integer 'déclare la variable T (Total)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set N = Sheets("Feuil1") 'définit l'onglet N
Set G = Sheets("Feuil2") 'définit l'onglet G
Set M = Sheets("Feuil3") 'définit l'onglet M
M.Range("A1").CurrentRegion.ClearContents 'éfface les éventuelles anciennes moyennes

'********************************
'combien il y a-t-il de groupes ?
'********************************
TC1 = G.Range("A1").CurrentRegion 'définit le tableau de cellule TC1 (Groupes)
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TC1, 1) 'boucle sur toutes les lignes I du tableau de cellues TC1 (en partant de la seconde)
    D(TC1(I, 2)) = "" 'alimente le dictionnaire D avec la valeur en colonne 2 de TC (le groupe)
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste du dictionaire D sans doublon

'*******************************************
'combien il y a-t-il de membres par groupe ?
'*******************************************
For I = 0 To UBound(TMP, 1) 'boucle 1 : sur tous les groupes
    NM = 0: T = 0 'initialise les variable NM et T
    Erase TG 'initialise le tableau TG
    For J = 2 To UBound(TC1, 1) 'boucle 2 : sur toutes les lignes J du tableau de cellules TC1 (en partant de la seconde)
        If TC1(J, 2) = TMP(I) Then 'condition : si la valeur ligne J colonne 2 de TC1 est égale au groupe TMP(I)
            ReDim Preserve TG(K) 'redimensionne le tableau des groupes TG
            TG(K) = TC1(J, 1) 'récupère dans la ligne K de TG le membre ligne J colonne 1 de TC1
            K = K + 1 'incrémente K
        End If 'fin de la condition
    Next J 'prochaine ligne de la boucle 2
    'TG contient maintenant tous les membres du groupe TMP(I)

    '******************************
    'calcul et renvoie des moyennes
    '******************************
    TC2 = N.Range("A1").CurrentRegion 'définit le tableau de cellue TC2 (Notes)
    For K = 0 To UBound(TG, 1) 'boucle 3 : sur tous les membres de TG
        For L = 2 To UBound(TC2, 1) 'boucle 4 sur toutes les lignes L du tableau de cellules TC2 (en partant de la seconde)
            If TG(K) = TC2(L, 1) Then 'si le membre est égal à la valeur ligne L colonne 1 de TC2
               NM = NM + 1 'incrémente le nombre de membres NM
               T = T + TC2(L, 2) 'cacule le total des notes des membres T
            End If 'fin de la condition
        Next L 'prochaine ligne de la boucle 4
    Next K 'prochain menbre de la boucle 3
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne 1 de l'onglet M)
    Set DEST = IIf(M.Range("A1") = "", M.Range("A1"), M.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
    DEST.Value = "Moyenne Groupe " & TMP(I) 'revoie le texte dans DEST
    'renvoie le calcul de la moyenne arrondi à deux chiffres dans DEST décalée d'une colonne à droite
    DEST.Offset(0, 1).Value = Round(T / NM, 2)
Next I 'prochain groupe de la boucle 1
M.Select 'sélectionne l'onglet M
End Sub
9gardou-v01.xlsm (26.98 Ko)

Si tu peux ajouter une colonne "groupe", alors

  • soit tu fais un TCD
  • soit tu utilises MOYENNE.SI

Les 2 sont dans l'exemple joint

10test.xlsx (12.88 Ko)

Merci à vous 2 mais malheuresement je ne peux pas utiliser de VB iciet je ne peux pas non plus rajouter la moindre colonne. Je garde néanmoins vos réponses cela peut toujours servir.

Si d'autres idée je suis preneur

Passons alors aux formules matricielles ... je vais regarder !

bonjour

sans vba ; ni tdc ; ni colonne additionnelle ;en une seule formule digeste

22gardou.xlsx (10.43 Ko)

cordialement

salut steelson : je viens de voir ;ce que tu regardes etonnant ? non?

tulipe_4 a écrit :

cordialement

salut steelson : je viens de voir ;ce que tu regardes etonnant ? non?

ben oui, je reconnais qu'il y a plus fort que moi en matière de formules matricielles -que j'ai commencé à appréhender en lisant tes réponses- , formule que j'avais commencé à chercher en vain hier, mais ce matin, en faisant le jardin, j'ai eu une lumière que tu as éclairée

Merci à vous 2, j'ai réussi a mettre en place pour calculer la somme des notes par rapport au groupe.

Maintenant j'ai un autre petit soucis, si la note est "ABS", j'aimerais pouvoir calculer le nombre de membre du groupe X qui n'ont pas ABS dans le champ note.

Je pense qu'on doit passer par 2 calcules, 1 pour calculer le nombre de personnes du groupe NB.SI(XXX;1), par contre je bloque pour compté le nombre de personne qui ont eu ABS dans le groupe.

Je ne pense pas qu'l faut passer par NB.SI.ENS mais je ne vois pas non plus comment je vais pouvoir gerer le lien entre la note et le groupe.

Ca doit ressembler à la sommeprod mais je ne suis pas sur

re

voila ;par exemple

toujours le meme principe ;mais on compte au lieu d'additionner

12gardou.xlsx (10.57 Ko)

en jaune

cordialement

bonsoir Tulipe

Merci de ton aide, par contre j'ai rien en jaune , juste la meme formule en vert, j'ai loupé un bout?

re

donc re- voila

15gardou-2.xlsx (10.61 Ko)

cordialement

un grand merci de je vais essayer de comprendre tout ca maintenant

Rechercher des sujets similaires à "2010 calculer somme multiple feuille"