Renvoyer plusieurs valeurs dans différentes cellules VBA

Mazne

XLDnaute Nouveau
Salut à tous,
j'ai un petit soucis, je cherche à faire une moyenne mobile. Pour ce faire, je dois faire la moyenne de 12 cellule et la renvoyer dans une cellule, ensuite j'aimerais incrémenter pour faire la moyenne de 12 valeurs en démarrant à la 2ème.
Cependant, dans mon code, seule une valeur m'est renvoyé sur ma feuille excel.
Voici mon code:

Function mmc(j As Integer)
Dim i As Integer
Dim sommemmc, mmc2 As Double
For i = 1 To 12
sommemmc = sommemmc + cells(j + i, 2).Value
Next
mmc2 = sommemmc / 12
cells(55, 2) = mmc2
End Function

Sub MoyenneMob()
Dim i As Integer
Dim j As Integer
For i = 1 To 28
cells(53 + i, 2) = mmc(i)
Next
Next
End Sub

Si quelqu'un sait regler mon problème,

merci d'avance !
 

ROGER2327

XLDnaute Barbatruc
Re : Renvoyer plusieurs valeurs dans différentes cellules VBA

Bonsoir Mazne
Code:
[COLOR="DarkSlateGray"][B]Function MoyMobN(r As Range, a&, n&)
   Application.Volatile
   MoyMobN = WorksheetFunction.Average(r.Offset(a - 1, 0).Resize(n, 1))
End Function[/B][/COLOR]
En supposant que les données sont dans la colonne K à partir de la ligne 4 :
Code:
[COLOR="DarkSlateGray"][B]=MoyMobN(K4;[COLOR="Blue"]1[/COLOR];[COLOR="Sienna"]12[/COLOR])[/B][/COLOR]
renvoie la moyenne des 12 premières valeurs (K4:K15).

Code:
[COLOR="DarkSlateGray"][B]=MoyMobN(K4;[COLOR="Blue"]5[/COLOR];[COLOR="Sienna"]6[/COLOR])[/B][/COLOR]
renvoie la moyenne des 6 valeurs à partir de la cinquième (K8:K13).

Est-ce convenable ?​
ROGER2327
#3464


23 Floréal An CCXVIII
2010-W19-3T22:12:47Z
 

Mazne

XLDnaute Nouveau
Re : Renvoyer plusieurs valeurs dans différentes cellules VBA

C'est parfait =) Merci beaucoup !
Par contre, y aurait-il un moyen de renvoyer la valeur directement sous VBA et sans devoir dérouler la formule excel ?
En tout cas, merci beaucoup j'avais trouvé une autre solution, mais impossible de l'incrémenter sur les colonnes donc ta solution est bien plus efficace !
 

ROGER2327

XLDnaute Barbatruc
Re : Renvoyer plusieurs valeurs dans différentes cellules VBA

Re...
En supposant que les données sont dans la colonne K à partir de la ligne 4 et que les résultats doivent apparaître en I2:I13 :
Code:
[COLOR="DarkSlateGray"][B]Sub MoyMob()
Dim plg As Range, moy As Range, dat(), i&
   Set plg = Range("K4")
   Set moy = Range("I2:I13")
   ReDim dat(0 To moy.Rows.Count - 1, 1 To 1)
   For i = 0 To UBound(dat, 1)
      dat(i, 1) = MoyMobN(plg.Offset(i, 0), 1, 12)
   Next i
   moy.Value = dat
End Sub[/B][/COLOR]
ou, sans utiliser la fonction MoyMobN :
Code:
[COLOR="DarkSlateGray"][B]Sub MoyMob()
Dim plg As Range, moy As Range, dat(), i&
   Set plg = Range("K4")
   Set moy = Range("I2:I13")
   ReDim dat(0 To moy.Rows.Count - 1, 1 To 1)
   For i = 0 To UBound(dat, 1)
      dat(i, 1) = WorksheetFunction.Average(plg.Offset(i, 0).Resize(12, 1))
   Next i
   moy.Value = dat
End Sub[/B][/COLOR]
ROGER2327
#3465


24 Floréal An CCXVIII
2010-W19-4T00:36:14Z
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
236

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly