• Initiateur de la discussion Initiateur de la discussion pierrot132
  • 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 !

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

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...
 
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:
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
@+
 
- 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ésolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
172
Réponses
10
Affichages
572
Réponses
4
Affichages
612
Retour