XL 2010 Macro pour calculer la moyenne de consommation

Achille

XLDnaute Nouveau
bonjour chers amis

En attache mon fichier excel avec deux feuille ,"ParaMrp" et "Base".

-la feuille Base contient des items avec l’historique des consommation et achat
-sur la feuille ParaMrm je veux insérer un macro pour calculer la moyenne de consommation pan an pour chaque item (la colonne bleue).

le fichier en attache contient plus d'explications


Merci d'avance
cordialement
 

Pièces jointes

  • Moyenne de consommation.xlsm
    25 KB · Affichages: 66

Modeste

XLDnaute Barbatruc
Bonjour Achille,

Avec Excel 2010, tu dois disposer d'une fonction MOYENNE.SI.ENS ... qui me semblerait convenir pour ce que tu souhaites faire. Ceci dit les 2 exemples que tu donnes dans le fichier donnent des résultats différents? Les valeurs ne correspondent pas à ce qui est encadré ... Difficile de savoir si on a compris correctement!?
 
Dernière édition:

Achille

XLDnaute Nouveau
Merci pour votre réponse Modeste.

Je cherche pas une formule pour calculer ça, j'ai déjà fait ça avec formule et avec TCD, mais ce que je cherche c'est une macro VBA.

concernant les valeurs c'est claire: je cherche à afficher la moyenne de consommation de chaque item dans la feuille "ParaMrp" à partir de son historique enregistré dans la feuille "Base".


Achille
 

Paf

XLDnaute Barbatruc
Bonjour à tous,

un essai macro:
VB:
Sub Moyenne()
Dim WP As Worksheet, WB As Worksheet, i As Long, Tablo, TabFin, Plage As Range
Set WP = Worksheets("ParaMrp")
Set WB = Worksheets("Base")

Tablo = WP.Range("A8:A" & WP.Range("A" & Rows.Count).End(xlUp).Row)
ReDim TabFin(1 To UBound(Tablo))
Set Plage = WB.Range("A4:E" & WB.Range("A" & Rows.Count).End(xlUp).Row)
Plage.AutoFilter Field:=3, Criteria1:="Consommation"

For i = LBound(Tablo) To UBound(Tablo)
    Plage.AutoFilter Field:=1, Criteria1:=Tablo(i, 1)
    x = x + 1
    If Application.Subtotal(3, Plage.Columns(5)) = 0 Then
        TabFin(x) = "aucune consommation"
    Else
        TabFin(x) = Application.Subtotal(1, Plage.Columns(5))
    End If
Next
Plage.AutoFilter Field:=1
Plage.AutoFilter Field:=3
WP.Range("F8").Resize(UBound(TabFin), 1) = Application.Transpose(TabFin)
End Sub

Dans la feuille Base, les consommation sont majoritairement négatives, mais parfois positives, ce qui fausse les calculs.

A+
 
Dernière édition:

Achille

XLDnaute Nouveau
Merci pour votre réponse Modeste.

Je cherche pas une formule pour calculer ça, j'ai déjà fait ça avec formule et avec TCD, mais ce que je cherche c'est une macro VBA.

concernant les valeurs c'est claire: je cherche à afficher la moyenne de consommation de chaque item dans la feuille "ParaMrp" apartir de son historique enregistré dans la feuille "Base".


Achille
 

Achille

XLDnaute Nouveau
bonjour

encore un petit souci Paf.

je veux afficher la valeur zéro en cas oùu il y a pas de consommation ,mais la macro renvoie toujours une erreur.
pouvez vous svp vérifier pourquoi ?


en attache le fichier modifié

Cordialement
 

Pièces jointes

  • Moyenne de consommation.xlsm
    31.5 KB · Affichages: 58

Paf

XLDnaute Barbatruc
Re,

entre le classeur du post 1 et celui du post 11 les données de la feuille Base sont décalées d'une ligne vers le bas. Quand on lance la macro, si l'article n'existe pas la ligne de titre sera comptée alors qu'il n'y a pas eu de consommation => problèmes de moyenne (#DIV/0!)

Solution 1 : remonter les données d'une ligne
solution 2 : modifier : Set Plage = WB.Range("A4:E" & WB.Range("A" & Rows.Count).End(xlUp).Row)
en : Set Plage = WB.Range("A5:E" & WB.Range("A" & Rows.Count).End(xlUp).Row)

A+
 

Discussions similaires