Somme des 10 dernières valeurs non null

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

Pat77

XLDnaute Nouveau
Bonjour

Dans une colonne "A" contenant des données ou non (zéro), je cherche à sommer dans la colonne "B" uniquement les 10 dernières données >0 de la colonne "A".

La difficulté que je rencontre est que les 10 dernières valeurs >0 ne sont donc pas forcement sur les 10 dernières lignes (trop facile).

J'ai essayé avec "somme.si" et "decaler", mais je n'ai pas le résultat souhaité.

donc si quelqu'un connait une astuce ou une fonction, je suis preneur.

Merci à tous.
 
Re : Somme des 10 dernières valeurs non null

Bonsoir Pat, bonsoir le forum,

Je sais que tu demandes une formule mais peut-être cette macro pourra te dépanner :

Code:
Sub Macro1()
Dim x As Byte 'décalre la variable x
Dim cel As Range 'déclare la variable cel (CELlule)
Dim s As Double 'déclare la variable s (Somme)
 
Set cel = Range("A65536").End(xlUp) 'définit la variable cel
s = cel.Value 'définit la variable s
For x = 2 To 10 'boucle sur les 9 dernières valeurs
    If cel.Offset(-1, 0) = "" Then 'condition : si la cellule au dessus de cel est vide
        Set cel = cel.End(xlUp) 'redéfinit la prochaine cellule (la prochaine cellule non vide rencontrée)
    Else 'sinon
        Set cel = cel.Offset(-1, 0) 'redéfinit la prochaine cellule (la cellule au dessus)
    End If 'fin de la condition
    s = s + cel.Value 'redéfinit la variable s
Next x 'prochaine valeur de la boucle
Range("B1").Value = s 'affiche la somme en B1
End Sub
 
Re : Somme des 10 dernières valeurs non null

Bonsoir,
bonsoir Robert,
Une fonction perso
Code:
Function SOMPERSO(Plage As Range)
Temp = Plage.Value
    For i = UBound(Temp) To LBound(Temp) Step -1
        If Temp(i, 1) > 0 Then
            compteur = compteur + 1
            SOMPERSO = SOMPERSO + Temp(i, 1)
            If compteur = 10 Then Exit For
        End If
    Next
End Function
A+
kjin
 

Pièces jointes

- 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

Discussions similaires

Réponses
15
Affichages
258
Réponses
10
Affichages
734
Retour