Renvoyer plusieurs valeurs dans différentes cellules VBA

  • Initiateur de la discussion Initiateur de la discussion Mazne
  • Date de début Date de début

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 !

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 !
 
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
 
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 !
 
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:
- 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

Discussions similaires

Réponses
5
Affichages
708
Réponses
4
Affichages
581
Réponses
8
Affichages
651
Retour