moyenne de plusieurs groupes de cellules

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

W

williams

Guest
Bonjour
Quand dans une collone (E) on a la moyenne des temperatures de chaque mois pendant 4 ans est ce que la formule ci-dessous nous donne la moyenne de la temperature des 4 hivers si :
les moyennes mensuelles des temperatures du 1ere hiver sont de la cellule E1870 à celle E1872, du 2eme hiver de la cellule E1882 à E1884... ?
Si non comment faire et si il y a une formule mieu pouvez vous me la dire.

=MOYENNE((E1870:E1872)🙁E1882:E1884)🙁E1894:E1896)🙁E1906:E1908))

merci

Williams
 
Bonjour Williams,

si par hasard les cellules intermédiaires (de 1872 à 1882, etc) sont
vides, tu peux alors écrire directement
=Moyenne(E1870:E1908)
sinon je ne vois rien d'autres, mais comme les voix du mâitre excelien sont impénétrables, peut-être qu'on te fera une autre proposition

Léa
 
RE

Apres un petit test

le résultat est identique dans les deux cas.

tu peux simplifier comme ci-dessous
=MOYENNE(E1870:E1872;E1882:E1884;E1894:E1896;E1906:E1908)

ou encore en utilisant des plages nommées

=moyenne(hiver1;hiver2;hiver3;hiver4)

Ou encore

=moyenne(hiver) sélection multiple avec CTRL puis nommer la plage sélectionnée hiver

A+
 
Merci,
d'apres ce que m'a dit dg c'est ce qu'il fallait que je face. Car entre les groupes des 4 cellules il y a 3 autres groupes de cellules pour les mois du printemps, ete...

Je voulais vous posez une autre question :

Toujour a propos de ce que que je viens de vous parler, comment peut on faire pour faire a paraitre dans une cellule la moyenne la plus eleve de l'un de ces 4 groupes (E1870:E1872) puis (E1882:E1884) puis (E1894:E1896) et (E1906:E1908) sans calcules dans 4 cellules leur moyenne ?

Car si je fais : =MIN(E1870:E1872;E1882:E1884;E1894:E1896;E1906:E1908) cela me donne le minimum d'une de ces 12 cellules et de ces 4 moyennes.

merci

Williams
 
Merci DG

Mais Concernant la formule =MAX(MOYENNE(hiver1);MOYENNE(hiver2);MOYENNE(hiver3);moyenne(hiver4))si dans l'hiver3 on a pas de donnee dans les 3 cellules alors on a #DIV/0!

Comment peut on faire pour que la formule tien compte que des 3 hivers où on a des valeurs ?

Williams
 
Bonjour Williams


un petit exemple en vba

un bouton et une macro par requete

hiver, printemps, été, automne

il suffit de faire un copier coller de la routine et modifier le nom des plages
pour l'adapter à d'aurtres périodes de l'année.

Les résultats peuvent s'afficher dans des cellules ou dans msgbox

a toi de voir

si ça te convient je peux finir le projet

Cordialement
 

Pièces jointes

Je viens de regarguer le fichier. Cela me fais pareil car j'ai un message qui me dit : "Les macro de ce classeur sont desactives car le niveau de securite est eleve...."

Meme en mettant le niveau de securite faible cela ne fonctionne pas et dit toujour pareil.

Avec une modification de la formule cela doit etre possible de ne plus avoir #DIV/0!. Il faudrait que la formule tien compte que des cellules avec un chiffre et pas celle qui sont vides.

Williams
 
Re

tu dois normalement à l'ouverture du fichier avec une sécurité moyenne

(outils options securité macro moyenne)

avoir une boîte de dialogue qui te propose d'activer ou de désactiver les macros.


Effectivement, c'est possible de gérer le #div/0! mais avec une formule très allongée.

sinon voici le code vba a coller sur un bouton

'Hiver Maxi
Private Sub CommandButton1_Click()

If Application.WorksheetFunction.Count(Range("hiver1")) > 0 Then
mhiver1 = Application.WorksheetFunction.Average(Range("hiver1"))
Else
mhiver1 = 0
Message = "Pas de données pour l'hiver 1"
reponse = MsgBox(Message)
End If

If Application.WorksheetFunction.Count(Range("hiver2")) > 0 Then
mhiver2 = Application.WorksheetFunction.Average(Range("hiver2"))
Else
mhiver2 = 0
Message = "Pas de données pour l'hiver 2"
reponse = MsgBox(Message)
End If

If Application.WorksheetFunction.Count(Range("hiver3")) > 0 Then
mhiver3 = Application.WorksheetFunction.Average(Range("hiver3"))
Else
mhiver3 = 0
Message = "Pas de données pour l'hiver 3"
reponse = MsgBox(Message)
End If

If Application.WorksheetFunction.Count(Range("hiver4")) > 0 Then
mhiver4 = Application.WorksheetFunction.Average(Range("hiver4"))
Else
mhiver4 = 0
Message = "Pas de données pour l'hiver 4"
reponse = MsgBox(Message)
End If
maxhiver = Application.WorksheetFunction.Max(mhiver1, mhiver2, mhiver3, mhiver4)
Message = "la température moyenne maximale est : " & maxhiver
reponse = MsgBox(Message)
End Sub


A+
 
La seul formule qu'on m'a donnee qui devrait fonctionne est : =SI(MOYENNE(E9:E11)=0;MAX(MOYENNE(E21:E23;E33:E35;E45:E47));SI(MOYENNE(E21:E23)=0;MAX(MOYENNE(E9:E11;E33:E35;E45:E47));SI(MOYENNE(E33:E35)=0;MAX(MOYENNE(E9:E11;E21:E23;E45:E47));SI(MOYENNE(E45:E47)=0;MAX(MOYENNE(E9:E11;E21:E23;E33:E35));""))))

Mais cela ne calcule plus la moyenne quand toute les cellules sont pleine et aussi quand il manque des donnees.

Et comme tu le d'annee en annee la formule va augmente et etre trop longue. Est il possible avec une formule ou... de faire que la formule ne tient pas compte des cases vides et que pour 20 annees elles soit pas tres tres grandes comme ca serait le cas avec celle de ci-dessus ?

merci

Williams
 
re

Avez-vous essayé le code joint plus haut

il est facile à comprendre et encore plus facile à actualiser.


Il répond à votre problème.

If Application.WorksheetFunction.Count(Range("hiver1")) > 0 Then

cette premiere ligne teste si il y a au moins une T° dans la plage

mhiver3 = Application.WorksheetFunction.Average(Range("hiver3"))

S'il y a au moins 1 valeur la moyenne de la plage est calculée et stockée dans Mhiver3

maxhiver = Application.WorksheetFunction.Max(mhiver1, mhiver2, mhiver3, mhiver4)
Message = "la température moyenne maximale est : " & maxhiver
reponse = MsgBox(Message)

en fin de procédure extraction du max des 4 variables calculées et affichage


A+
 
Concernant les macros, comme je ne m'y connais pas je vais regarder sur internet pour en savoir plus et voir ce que vous m'avez dit.

Si pour chaque hiver j'utilise la formule =SI(ESTERREUR(MOYENNE(HIV3));0;MOYENNE(HIV3)) pour calculer la moyenne de chaque hiver puis apres en utilisant =MAX(moyenne_hiver1;moyenne_hiver2;moyenne_hiver3;moyenne_hiver4) tout va bien alors je peus savoir quel est l'hiver qui a eu la moyenne la plus eleve sans probleme.

Mais pour savoir la moyenne MENSUELLE la plus eleve de tout les hivers j'ai de nouveau le meme probleme avec =MAX(3mois_d'ihver1;3mois_d'hivers2...) comme les donnees mensuelles de chaque d'hivers sont pas a la suite. Alors que pour savoir quel est l'hiver qui a eu la moyenne la plus eleve, les moyennes de chaque hiver sont a la suite raison pour laquelle il y a pas de probleme avec MAX.

Donc y a t'il que les macros qui me serait utile pour que je ne mette pas tout les mois d'hiver a la suite ce me donnerais un boulot monstre et le fichier serait 2 fois plus lourd ??

Merci

Williams
 
- 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

W
Réponses
2
Affichages
922
williams
W
Retour