Moyenne de colonnes avec VBA

Résolu/Fermé
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020 - Modifié par Lils_Bis le 7/04/2016 à 10:19
 Utilisateur anonyme - 19 avril 2016 à 21:39
Bonjour,
Tout d'abord, je travaille sous VBA grâce à EXCEL.
J'ai un problème je n'arrive pas à faire de simple moyenne sur des colonnes.
En effet, je vous présente de manière synthétique mon jeu de données :
A B
1 4
5 6
4 3
3 2

J'ai A dans la cellule A1 et B dans A2. Ainsi je voudrais faire apparaitre mes moyennes sous cette forme à partir de la cellule A4
A B
MOY MOY

HELP ! Ca me débloquerait grandement pour la suite de mon étude...
MERCI A TOU(TE)S D'AVANCE !

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 7/04/2016 à 11:21
bonjour
J'ai A dans la cellule A1 et B dans A2

t'es sûr car vu ce que tu présentes ?....

Si moynne colonne A
MsgBox Application.Average(Range("A1:A17"))
 Michel
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
7 avril 2016 à 11:19
Pardon en effet, j'ai déraillé...
J'ai bien A dans la cellule A1 et B dans B1.....
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
Modifié par Lils_Bis le 7/04/2016 à 11:22
Donc mes moyennes dans D2 et E2 à faire apparaître
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
Modifié par Lils_Bis le 7/04/2016 à 12:02
Serait-il possible de le faire sous forme de boucles car j'ai 8 moyennes à faire sur mes 8 premières colonnes ?
Du genre quelque chose comme
For NbCol = 1 to 8
Afficher la moyenne dans la ligne 2 en partant de la colonne 11 jusque la colonne 19
Next NbCol

Pardon de ma naïveté, mais je suis un bébé sur VBA...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
7 avril 2016 à 12:36
Option Explicit
'----------------------------
Sub moyenner()
Dim derlig As Long, Cptr As Byte
Application.ScreenUpdating = False
derlig = Range("A2:H10000").Find(what:="*", searchdirection:=xlPrevious).Row
For Cptr = 1 To 8
Cells(2, Cptr + 8) = Application.Average(Cells(2, Cptr), Cells(derlig, Cptr))
Next
End Sub
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
7 avril 2016 à 13:35
Votre code me donne les moyennes par ligne pour en l'occurrence les 8 premières. Or, je souhaiterais faire des moyennes pour chacune de mes 8 colonnes :
A B C D E F G H


et afficher les résultats dans les colonnes :
K L M N O P Q R
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
7 avril 2016 à 15:06
J'ai bien lu: ?


"MERCI D'AVOIR PASSE DU TEMPS POUR M'AIDER"
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
7 avril 2016 à 15:21
Merci d'avoir passé du temps pour m'aider. C'est très gentil de votre part, mais je revenais vers vous pour vous spécifier que le code que vous m'avez gracieusement donné ne fonctionne pas comme je le souhaiterais.
Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750 > Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
7 avril 2016 à 15:59
Bonjour,

Excusez l'incruste mais...

Vous dites :
Or, je souhaiterais faire des moyennes pour chacune de mes 8 colonnes :
A B C D E F G H

C'est exactement ce que fait le code donné.

Décortiquons...
For Cptr = 1 To 8
            Cells(2, Cptr + 8) = Application.Average(Cells(2, Cptr), Cells(derlig, Cptr))

For Cptr = 1 To 8 ==> boucle de de 1 à 8
Pour 1 :
Cells(2, Cptr + 8) = Application.Average(Cells(2, Cptr), Cells(derlig, Cptr))
signifie :
Cellule I2 = Moyenne(A2:Adrlig)

Pour 2 :
Cells(2, Cptr + 8) = Application.Average(Cells(2, Cptr), Cells(derlig, Cptr))
signifie :
Cellule J2 = Moyenne(B2:Bdrlig)

Ce qui correpond à ton souhait non?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
7 avril 2016 à 16:17
salut frank

il a un truc à améliorer;
le cas où une colonne est vide
c'est fait, mais vu l'attitude de lilis_bis, j'abandonne le suivi;
-1
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
11 avril 2016 à 13:58
Je n'ai pas de colonnes vides mais merci quand même M.michel_m
0