Boucle qui teste une cellule et calcule des moyennes

Babar1986

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je suis désespéré j'ai essayé plein de solutions différentes et je n'y arrive pas. Voila mon problème.
Je fais une macro qui teste si la cellule D9 n'est pas vide.
Si oui, je veux qu'ensuite la macro calcule la moyenne en cellule D11 des cellules D12 à D14.
Puis la moyenne en cellule D15 des cellules D16 à D19
Puis la moyenne en cellule D20 des cellules D21 à D22
Puis la moyenne en cellule D23 des cellules D24 à D25

Puis je teste la cellule E9
Puis la moyenne en E11, E15, E20, E23

ETC

Voila le code que j'ai mis :

Code:
ii = 4
While Cells(9, ii) <> ""
    Cells(11, ii).Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[1]C:R[4]C)"
    Cells(15, ii).Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[1]C:R[5]C)"
    Cells(20, ii).Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[1]C:R[3]C)"
    Cells(23, ii).Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[1]C:R[3]C)"
ii = ii + 1

Wend

Au final, le test marche, mais ensuite il me crée des moyennes pour chaque ligne.

Je ne comprend vraiment pas pourquoi.

Si quelqu'un pouvait m'expliquer mon erreur et me donner la réponse.

Merci d'avance !!

Arthur.
 

fredl

XLDnaute Impliqué
Re : Boucle qui teste une cellule et calcule des moyennes

salut Arthur!
a priori, pas besoin de macro pour ce que tu veux faire.
la fonction "si" semble suffir à ton besoin.
Voir fichier joint.
Tiens moi au courant.
Fred
 

Pièces jointes

  • essai.xls
    21 KB · Affichages: 40
  • essai.xls
    21 KB · Affichages: 50
  • essai.xls
    21 KB · Affichages: 47

jpb388

XLDnaute Accro
Re : Boucle qui teste une cellule et calcule des moyennes

Bonjour à tous ,fredl
et si malgrès tout tu as en besoin
Code:
Sub test()
 If Cells(9, 4) <> "" Then
     With Cells(11, 4)
       .FormulaR1C1 = "=AVERAGE(R[1]C:R[4]C)"
       Cells(11, 4) = CDbl(Format(Cells(11, 4), "##,##0.00"))
       .Font.Bold = True
       End With
     With Cells(15, 4)
       .FormulaR1C1 = "=AVERAGE(R[1]C:R[5]C)"
       Cells(15, 4) = CDbl(Format(Cells(15, 4), "##,##0.00"))
       .Font.Bold = True
       End With
     With Cells(20, 4)
       .FormulaR1C1 = "=AVERAGE(R[1]C:R[3]C)"
       Cells(20, 4) = CDbl(Format(Cells(20, 4), "##,##0.00"))
        .Font.Bold = True
      End With
      With Cells(23, 4)
       .FormulaR1C1 = "=AVERAGE(R[1]C:R[3]C)"
       Cells(23, 4) = CDbl(Format(Cells(23, 4), "##,##0.00"))
       .Font.Bold = True
       End With
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 800
Membres
102 980
dernier inscrit
brossadan