Moyenne sous contraintes

Fermé
-maroon- Messages postés 18 Date d'inscription lundi 2 mai 2016 Statut Membre Dernière intervention 30 mai 2016 - 19 mai 2016 à 19:53
-maroon- Messages postés 18 Date d'inscription lundi 2 mai 2016 Statut Membre Dernière intervention 30 mai 2016 - 19 mai 2016 à 19:55
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!! :)
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:

1 réponse

-maroon- Messages postés 18 Date d'inscription lundi 2 mai 2016 Statut Membre Dernière intervention 30 mai 2016
19 mai 2016 à 19:55
Je ne vois pas où mettre une PJ!
0