Moyenne d'un nombre limité de valeurs

Bonjour à tous,

Après moultes recherches sur le forum et Google en général, je n'ai pas réussi à trouver de réponse à mon problème, c'est pourquoi je me tourne vers vous: je me dis en fait que c'est soit une question extrêmement simple, soit extrêmement compliqué.

Dans le fichier joint, j'ai 17 mois (qui partent du mois 0 au mois 16), et pour chaque mois, je peux avoir une valeur ou du vide (pour mettre dans le contexte, en situation réelle j'ai une valeur, qui représente le nombre de vente d'un produit qui est en stock, et un vide si le produit n'a pas été vendu car il n'était pas en stock).

L'idée serait donc d'automatiser une moyenne des 12 dernières cellules non vides (sachant qu'à chaque mois je vais ajouter une colonne), tout en sélectionnant une plage de cellules plus vaste (car je veux la moyenne de 12 cellules non vides, et je ne sais pas pour chaque produit combien il y aura de cellules non vides à chaque fois, et je dois le faire sur 800 lignes donc plutôt peu productif de le faire à la main).

L'un d'entre-vous aurait-il une idée de génie pour résoudre ce problème? Ou alors me confirmer que c'est trop compliqué à mettre en place?

Je reste à votre disposition pour répondre à vos éventuelles questions, et vous remercie par avance de l'intérêt que vous porterez à cette problématique,

En vous souhaitant une bonne journée,

Bonjour,

Une proposition avec une fonction personnalisée.

Cdlt.

Option Explicit
Public Function Last12Values(r As Range)
Dim lastCol As Long, i As Long, j As Long
    lastCol = Cells(r.Row, Columns.Count).End(xlToLeft).Column
    For i = lastCol To 1 Step -1
        If Cells(r.Row, i) <> "" Then j = j + 1
        If j = 12 Then Exit For
    Next i
    If j < 12 Then
    Last12Values = CVErr(xlErrValue)
    Exit Function
    End If
    Last12Values = Application.Average(Range(Cells(r.Row, i), Cells(r.Row, lastCol)))
End Function

bonjour

bonjour jean eric

un essai avec decaler ;mais je ne saisis pas ta notion des 12derniers mois car pour trouver ta moyenne manuelle on depasse les 12derniers mois

10gdelmarre.xlsx (9.39 Ko)

cordialement

Bonjour tulipe_4,

Le Monsieur veut la moyenne des 12 derniers mois non-vides (soit les 12 dernières valeurs <>"").

Tu n'es pas loin du résultat.

Si j'ai évidemment compris la question.

Cdlt.

re

donc ce n'est pas les 12 derniers mois ;il faut sous entendre ;les 12derniers exercices reelement comptabilisables ; il sagit des 12dernieres valeurs >=0 qui peuvent tres bien s'etaler sur 14mois par exemple

une question : comment fait on si il y a moins de 12val a "compulser" ;j'entrevois un MIN(12;decaler(..........) non?????

cordialement

Re,

Une petite modification.

Option Explicit
Public Function Last12Values(r As Range)
Dim lastCol As Long, i As Long, j As Long
    Application.Volatile
    lastCol = Cells(r.Row, Columns.Count).End(xlToLeft).Column
    For i = lastCol To 1 Step -1
        If Cells(r.Row, i) <> "" Then j = j + 1
        If j = 12 Then Exit For
    Next i
    If j < 12 Then
        Last12Values = CVErr(xlErrValue)
        Exit Function
    End If
    Last12Values = Application.Average(Range(Cells(r.Row, i), Cells(r.Row, lastCol)))
End Function

Re,

c'est pour cette raison que la fonction personnalisée retourne #VALEUR! dans ce cas précis.

Bonjour,

Merci à tous les 2!

Effectivement, Jean-Eric a bien compris la demande, ils 'agit bien des 12 dernières valeurs >=0 qui peuvent s'étaler sur plus de 12 mois.

La fonction de Jean-Eric fonctionne et répond à ma demande, mais je vais me pencher ce soir sur la version avec "décaler" (et aussi mieux décrypter la fonction de Jean-Eric: on m'a donné du poisson et je vais essayer d'apprendre à pêcher ).

Merci encore en tout cas pour ces réponses plus que rapides!

En vous souhaitant un bon début de semaine,

Guillaume

Rechercher des sujets similaires à "moyenne nombre limite valeurs"