Moyenne sous contraintes
-maroon-
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
-maroon- Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
-maroon- Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me permets de solliciter votre aide pour m'aider à comprendre un code qui est très flou pour moi!! Je mais aussi un fichier exemple pour voir ce qu'il réalise.
C'est un code qui doit calculer la moyenne des valeurs présentes dans une colonne pour chaque groupe ayant la même référence (valeur associée dans une autre colonne). Il génère 2 colonnes: 1 avec les moyennes et l'autre avec la référence pris en compte. J'aimerais par exemple ne générer que la colonne des moyennes...
Tout commentaire/explication sur les différentes étapes seront les bienvenues!! En particulier celles que j'ai indiquées dans le code. Un grand merci d'avance!! :)
Je me permets de solliciter votre aide pour m'aider à comprendre un code qui est très flou pour moi!! Je mais aussi un fichier exemple pour voir ce qu'il réalise.
C'est un code qui doit calculer la moyenne des valeurs présentes dans une colonne pour chaque groupe ayant la même référence (valeur associée dans une autre colonne). Il génère 2 colonnes: 1 avec les moyennes et l'autre avec la référence pris en compte. J'aimerais par exemple ne générer que la colonne des moyennes...
Tout commentaire/explication sur les différentes étapes seront les bienvenues!! En particulier celles que j'ai indiquées dans le code. Un grand merci d'avance!! :)
Sub test()
Dim dat1 As Range, dat2 As Range, plage As Range
Dim i&, b(), s(), v()
Dim ip As Object
With Worksheets("feuil1")
Set ip = CreateObject("scripting.dictionary")
Set dat1 = Worksheets("feuil1").Range(.Range("B1"), .Range("B14").End(xlDown))
Set dat2 = Worksheets("feuil1").Range(.Range("L1"), .Range("L14").End(xlDown))
b = dat1.Value
s = dat2.Value
For i = 2 To UBound(b)
If Not IsEmpty(b(i, 1)) And Not IsEmpty(s(i, 1)) And IsNumeric(s(i, 1)) Then
If ip.Exists(b(i, 1)) Then 'les 6 lignes suivantes sont très floues pour moi
v = ip(b(i, 1))
v(0) = v(0) + s(i, 1): v(1) = v(1) + 1
ip(b(i, 1)) = v
Else
ip.Add b(i, 1), Array(s(i, 1), 1)
End If
End If
Next
b = ip.Keys 'ici on attribue les clés et items aux variables a et b
s = ip.Items
ReDim v(UBound(b) - (UBound(b) < 0), 1) ' Ici c'est la 1ere fois que je vois "Ubound" utilisé comme ça
For i = 0 To UBound(b) 'on calcul la moyenne ici? Mais c'est pas clair du tout!
v(i, 0) = b(i)
v(i, 1) = s(i)(0) / s(i)(1)
Next
Set plage = Worksheets("feuil1").Range("A1").End(xlToRight)(2, 2)
plage.Resize(i - (i = 0), 2).Value = v
End With
End Sub
A voir également:
- Symbole moyenne excel
- Excel moyenne - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide