Moyenne en vba

pierrot132

XLDnaute Nouveau
Bonsoir à tous.

Ma question ce soir est la suivante.

J'ai un tableau, dont la première me sert à calculer les moyennes des dix autres colonnes pour chaque ligne.

Comme tous les jours j'ajoute des valeurs dans les colonnes suivantes, je dois à chaque fois changer la formule =moyenne(A2:G2) en par exemple =moyenne(A2:h2).

J'aurais donc voulu grâce à une macro via un bouton automatiser tout ça en prenant en compte la dernière colonne que je viens de saisir pour calculer ma moyenne.

J'ai vu dans les posts précédents la formule suivante Application.worksheetsFunction.average=.... mais j'avoue ne pas très bien comprendre son utilisation.

Merci d'avance pour votre aide.
 

Pièces jointes

  • exemple.xls
    19 KB · Affichages: 326
  • exemple.xls
    19 KB · Affichages: 358
  • exemple.xls
    19 KB · Affichages: 353

myDearFriend!

XLDnaute Barbatruc
Re : Moyenne en vba

Bonsoir pierrot132,

Plutot que d'imaginer une usine VBA qui ne fera qu'alourdir ton classeur, pourquoi ne pas mettre tout simplement en A4 :
=MOYENNE(B4:IV4)
et tirer cette formule vers le bas ?

Sauf erreur, la fonction MOYENNE() sait très bien gérer les cellules vides et donc n'en tient pas compte...

Cordialement,

EDITION : Arf, bonsoir Marc77, on a frôlé l'embouteillage...
 

Staple1600

XLDnaute Barbatruc
Re : Moyenne en vba

Bonsoir


Dire que je me suis embêté (mais pas trop) à en créer une d'usine à gaz: mad:
Code:
Sub MOYENNEtest()
Dim dercol As Long
Dim Plage As Range
Dim cell As Range

dercol = Range("IV4").End(xlToLeft).Column
Set Plage = Range("B4", Range("B65536").End(xlUp))

For Each cell In Plage
    debut = cell.Address(0, 0) 'cf Pierrot93
    fin = cell.Offset(0, dercol - 2).Address(0, 0)
    cell.Offset(0, -1).Formula = "=AVERAGE(" & debut & " : " & fin & ")"
Next cell
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Moyenne en vba

Bonjour Pierrot, Marc, Didier, Stapple

une autre solution vba, renvoie en A1 la moyenne de la ligne 2 :

Code:
Range("A1").Value = WorksheetFunction.Average(Range("A2:" & Range("IV2").End(xlToRight).Address(0, 0)))

bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 764
Membres
105 064
dernier inscrit
Voluntaries