problème pour calculer une moyenne

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

S

steph751

Guest
Bonjour, j'aimerais créer un code VBA qui permette de calculer des moyennes par année

par exemple :
dans la colonne A il y a l'année et dans la B il y a des valeurs :

A B
2002
2002
2002
2002
2002
2002
2003
2003
2003
2003
2003
2004
2004
2004


je veux calculer la moyenne en 2002 -2003 et 2004
j'ai essayer un truc comme ça (pour l'année 2002 par exemple) mais ça marche pas 😕 (ça doit venir du if):

If Range("B2:B65536").Value = "2002" Then Range("C2").Value = "= AVERAGE(B2:B65536)"
 
Re : problème pour calculer une moyenne

Bonsoir,

si j'ai bien compris tu veux calculer une moyenne des valeurs de la colonnes B en fonction de l'année en colonne A, il faut donc combiner un somme.si que l'on divise par un nb.si, le tout en vba donnerait un truc du genre :

Code:
Sub Moyenne()
annee = InputBox("Quelle année (AAAA)? ", "Moyenne annuelle")
moy = Format(Application.WorksheetFunction.SumIf(Columns(1), annee, Columns(2)) / Application.WorksheetFunction.CountIf(Columns(1), annee), "0.00")
MsgBox ("La moyenne de l'année " & annee & " est de " & moy & ".")
End Sub

Ce code donne au travers d'un msgbox, la moyenne arrondie à deux chiffres après la virgule en fonction de l'année que l'on renseigne via la boite de dialogue

A adapter à ton pb bien sur

A+
 
Re : problème pour calculer une moyenne

ok merci, grace à ta formule j'ai pu trouver le code avec l'enregistreur de macro.

Je dois aussi faire afficher la valeur maximum et minimum de chaque année, je ne trouve pas la formule .
 
Re : problème pour calculer une moyenne

bonsoir roger, re steph,

une solution un peu alambiquée à adapter à ton fichier permettant d'obtenir le min et le max par pour 2002, 2003 et 2004

Code:
Sub minmax()
Dim plage As Range
Application.ScreenUpdating = False
If ActiveSheet.AutoFilterMode = False Then
Range("A1:B1").AutoFilter
Else: If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
End If
Selection.AutoFilter Field:=1, Criteria1:="2002"
Set plage = Range("B2:B" & [B65536].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
MsgBox Application.WorksheetFunction.min(plage)
MsgBox Application.WorksheetFunction.Max(plage)
Selection.AutoFilter Field:=1, Criteria1:="2003"
Set plage = Range("B2:B" & [B65536].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
MsgBox Application.WorksheetFunction.min(plage)
MsgBox Application.WorksheetFunction.Max(plage)
Selection.AutoFilter Field:=1, Criteria1:="2004"
Set plage = Range("B2:B" & [B65536].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
MsgBox Application.WorksheetFunction.min(plage)
MsgBox Application.WorksheetFunction.Max(plage)
ActiveSheet.AutoFilterMode = False
End Sub

Il est possible d'optimiser ce code car les années sont inscrites en dur dans le code

A+
 
Dernière édition:
Re : problème pour calculer une moyenne

Bonjour à tous,

S'il n'y avait que lui.................

D'autant qu'il était encore connecté à 11h35, fait ses emplettes sans doute, comme beaucoup trop maintenant...

Il arrivera un jour où personne ne répondra à personne...

Que le WE soit bon malgré tout.

Jean-Pierre
 
Re : problème pour calculer une moyenne

Re et salut Jean-Pierre 🙂

jeanpierre à dit:
S'il n'y avait que lui.................

Il arrivera un jour où personne ne répondra à personne...

Que le WE soit bon malgré tout.

C'est vrai qu'il arrive de ne pas avoir de retour, mais je trouve, bien qu'étant moins habitué que toi au forum, que dans l'ensemble, il y a beaucoup de personnes reconnaissantes, fort heureusement 🙂

Mais c'est vrai qu'on remarque plus celles (moins nombreuses) et ceux qui ne signalent jamais si la solution proposée leur convient. C'est bien dommage car on finit par les repérer 😉 Et ce sont leurs futures questions qui ne recevront plus de réponses ni d'intérêt par la suite 🙄

Ceci dit, bon week-end aussi 🙂

@+

EDIT : steph751 a des exercices à faire en VBA et tout ce qui lui convient, apparemment, c'est d'écrire, via VBA, une formule dans une cellule 🙄 (niark !)
 
Dernière édition:
Re : problème pour calculer une moyenne

Bonsoir à tous,

et merci pour l'avertissement Nolich! Je trouve particulièrement regrettable cette attitude de poster et de ne pas remercier. On croit aider quelqu'un de sincère et on se retrouve avec un suceur de roue, c'en est décourageant! M'enfin, ainsi va le monde!
Heureusement que tous ne sont pas comme ça.

Bon week-end à tous (sauf aux suceurs de roue!)
 
Re : problème pour calculer une moyenne

Re à tous, ledzepfred,

J'aime bien ton expression, elle me rappelle de bons souvenirs...(cyclisme)

Mais il est vrai que les sangsues et autres vampires agacent un peu.

Bon WE.

Jean-Pierre
 
Re : problème pour calculer une moyenne

Bonsoir jeanpierre 🙂

j'avais pensé aussi à "chewing gum sous une chaussure" (ça aussi c'est du vécu!) mais finalement suceur de roue est plus approprié

Heureusement que l'on croise plus d'organismes symbiotiques que de parasites sur ce forum!

bonne nuit
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
930
Réponses
7
Affichages
820
Retour