VBA : calcul de moyenne

actaris51

XLDnaute Occasionnel
Bonjour,
Je possède un fichier de ce type :
Cijoint.fr - Service gratuit de dépôt de fichiers
Dans ma feuille "données", je possède des indicateurs, mis à jours tous les mois.
Par exemple, ici j'ai mis des données pour la week 36, mais un mois plus tard, pour la week 40 il y aura de nouvelles données.
Je voudrais, dans ma feuilles "KPIs" calculer la moyenne des dernieres valeurs par indicateurs (par exemple ici, cela correspond à la moyenne de N3 à N11 pour le 1er indicateur et N12 à N20 pour le second.
Seulement je n'arrive pas à écrire une macro qui va chercher les dernieres valeurs remplies afin de pouvoir calculer la moyenne.
Pouvez vous m'aider ??
Merci
 

actaris51

XLDnaute Occasionnel
Re : VBA : calcul de moyenne

Bonjour Matt
NOn en fait il s'agit de la derniere colonne remplie avec des valeurs numériques.
Donc dans mon exemple la colonne N
J'ai mit des "X" dans la colonne R et les autres colonnes blanches pour indiquer que c'est là que seront entrées les nouvelles données lorsque l'on sera a la semaine 40, 44...
Si il le faut, je peut enlever ces "X" si cela peut simplifier le code.
Merci
 

Caillou

XLDnaute Impliqué
Re : VBA : calcul de moyenne

Bonjour a tous,

Essayes ce code et tiens nous au courant si on va dans le bon sens

Sub MoyenneDernierMois()
Dim PremCol As Byte 'Première colonne du tableau
Dim DerCol As Byte 'Dernière colonne du tableau
Dim LaCol As Byte 'Colonne pour la moyenne
Dim LigRef As Byte '1ere ligne utilisée
Dim i As Integer 'Indice de boucle

PremCol = 5
DerCol = 31
LigRef = 3

'Recherche de la colonne moyenne
For i = DerCol To PremCol Step -1
If Not IsEmpty(Cells(LigRef, i)) And IsNumeric(Cells(LigRef, i)) Then
LaCol = i
Exit For
End If
Next

With Sheets("KPIs")
.Range("E2").FormulaR1C1 = "=AVERAGE(Données!R3C" & LaCol & ":R11C" & LaCol & ")"
.Range("E3").FormulaR1C1 = "=AVERAGE(Données!R11C" & LaCol & ":R20C" & LaCol & ")"
End With

End Sub


Caillou
 

matt916

XLDnaute Nouveau
Re : VBA : calcul de moyenne

J'arrive un peu tard !:)

Sub test()

Application.ReferenceStyle = xlR1C1

'on sélectionne la feuille sur laquelle on veut calculer une moyenne
Sheets("Données").Select
Col = Val(InputBox("Dernière colonne renseignée"))
MoyenneBlocking = Round(WorksheetFunction.Average(Range(Cells(3, Col), Cells(11, Col))), 2)
MoyenneNonBlocking = Round(WorksheetFunction.Average(Range(Cells(12, Col), Cells(20, Col))), 2)

'on affiche le résultat
Sheets("KPIs").Activate
Cells(2, 5).Value = MoyenneBlocking
Cells(3, 5).Value = MoyenneNonBlocking

Application.ReferenceStyle = xlA1


End Sub

tant pis je la mets quand même
a+
Matt
 

Discussions similaires

Réponses
4
Affichages
407

Statistiques des forums

Discussions
312 352
Messages
2 087 521
Membres
103 575
dernier inscrit
rst