Microsoft 365 Additionner les 7 cellules non vides de la colonne B en dessus

Lambico

XLDnaute Nouveau
Bonjour à tous,

J'aurais aimé additionner les 7 cellules non vides de la colonne B en dessus comme joint dans l'exemple ci-joint.
Je croche dans la solution alors que je pense qu'il doit ay en avoir une.
Merci d'avance de votre aide.

Bonne soirée

Lambico
 

Pièces jointes

  • Calcul cellules non vides.xlsx
    10.5 KB · Affichages: 16

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Lambico :), @djidji59430 ;), @TooFatBoy ;),

Pour simplifier, on utilise une colonne auxiliaire (colonne C) avec une formule en C1 à recopier vers le bas :
VB:
=SI(B2="";"";NB(B$2:B2))

Ensuite en D2, la formule :=SI(B2="";"";B2)

Puis en D3, une formule à recopier vers le bas :
VB:
=SI(B3="";"";SI(C3<=7;SOMME(B$2:B3);SOMME(B$2:B3)-SOMMEPROD((B$2:B2)*(C$2:C2<=C3-7))))

Deux type de formules au choix (colonne D et E).

nota : la formule en colonne D somme l'heure de la colonne B et les 6 heures précédentes. Si le nombre d'heures disponibles au-dessus de la ligne de la formule est inférieur à 6, alors on somme toutes les heures depuis B2 jusqu'à la ligne de la formule.
La formule en colonne E renvoie une chaine vide si on n'a pas les 7 valeurs non vides.
 

Pièces jointes

  • Lambico- somme 7 non, vides max- v1.xlsx
    15.3 KB · Affichages: 2
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Avec une fonction VBA nommée SommeN :
SommeN( xplage , Combien , siMoins )

  • xplage est la plage des valeurs
  • Combien est le nombre de cellule non vide à sommer
  • siMoins : c'est un argument optionnel. S'il est absent, alors même si on a pas les Combien valeurs, on affiche la somme. Si l'argument est présent alors si on n'a pas les Combien valeurs, on affiche l'argument siMoins.

Le classeur montre l'utilisation avec quatre formules différentes. Il y a sans doute une qui vous conviendra.

Le coe de la fonction dans module1 :
VB:
Function SommeN(xplage As Range, Combien&, Optional siMoins)
Dim Moins, t, i&, somme, n&
   Moins = IsMissing(siMoins)
   If xplage.Rows.Count = 1 Then    'cas ou plage ne comporte qu'une seule cellule
      ReDim t(1 To 1, 1 To 1)
      t(1, 1) = xplage.Columns(1)(1)
   Else
      t = xplage
   End If
   For i = UBound(t) To 1 Step -1
      If n >= Combien Then Exit For
      If t(i, 1) <> "" Then n = n + 1: somme = somme + t(i, 1)
   Next i
   SommeN = somme
   If Not IsMissing(siMoins) Then If n < Combien Then SommeN = siMoins
End Function
 

Pièces jointes

  • Lambico- somme 7 non, vides max- v2.xlsm
    20 KB · Affichages: 4
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Pardon R@chid, mais je crois que ce n'est pas exactement ça.
Je crois qu'il faut que sur chaque ligne (ou chaque ligne non vide) on trouve la somme des 7 cellules non vides précédentes.


C'est quand même pratique ce LET !
Il existe à partir de quelle version ?
Uniquement 365 ? [edit] Apparemment, ça date d'Excel 2021 [/edit]
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir R@chid :),

Tu devrais intervenir plus souvent. Tes formules me permettent de découvrir les nouvelles fonctions de Excel 365 👍 (telle que PRENDRE()).

Sur ce coup on n'a pas compris la même chose. Le demandeur nous précisera ce qu'il veut.

Bon! Il est peut-être temps d'aller au lit prendre un repos bien mérité, non ? (et ça vaut pour @TooFatBoy aussi ;))

On verra tout ça demain...

au lit.gif
 
Dernière édition:

Lambico

XLDnaute Nouveau
Bonsoir R@chid :),

Tu devrais intervenir plus souvent. Tes formules me permettent de découvrir les nouvelles fonctions de Excel 365 👍 (telle que PRENDRE()).

Sur ce coup on n'a pas compris la même chose. Le demandeur nous précisera ce qu'il veut.

Bon! Il est peut-être temps d'aller au lit prendre un repos bien mérité, non ? (et ça vaut pour @TooFatBoy aussi ;))

On verra tout ça demain...

Regarde la pièce jointe 1163533


Bonjour à tous,

merci pour vos réponses,
Effectivement j'aimerais calculer le nombres d'heures (col B) qui se situe dans une plage de 7 cellules en dessus
et non vide (yc celle du calcul C)
Pour pouvoir "tirer" cette cellule en col C pour calculer chaque valeurs de 7 non vide en dessus.

Dans l'exemple à "mapomme" les trois formules fonctionnent mais j'aurai aimé qu'elle ne recommence pas depuis la cellule B2 mais seulement les 7 cellules en dessus.

En tout cas merci pour vos propositions.

Cordialement

Lambico
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Lambico ;) ,

Finalement j'ai beau vous relire, je ne comprends pas ce vous désirez.

Le plus simple est de joindre l'exemple qui ne conviendrait presque et d'y montrer les résultats que vous voulez vraiment.
Vous évoquez une de mes formules ??? J'ai posté deux classeurs avec respectivement 2 et 4 formules, comme je ne lis pas (encore) dans le marc de café du main, je ne sais pas de quoi vous parlez...
 

Lambico

XLDnaute Nouveau
Bonjour @Lambico ;) ,

Finalement j'ai beau vous relire, je ne comprends pas ce vous désirez.

Le plus simple est de joindre l'exemple qui ne conviendrait presque et d'y montrer les résultats que vous voulez vraiment.
Vous évoquez une de mes formules ??? J'ai posté deux classeurs avec respectivement 2 et 4 formules, comme je ne lis pas (encore) dans le marc de café du main, je ne sais pas de quoi vous parlez...
 

Lambico

XLDnaute Nouveau
Bonjour à tous,
Alors c'est moi qui est une pive...je l'avoue, la formule N° 3 et le vba de @mapomme fonctionne à merveille.
Remarque la 4 aussi, du coup je n'ai pas testé les autres.
Je m'en excuse car j'avais fais une petite fôte ;) .
Merci à vous tous de vous être penché sur mon problème dont j'ai eu peine à expliqué.
Cordialement.
Lambico
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Pardon R@chid, mais je crois que ce n'est pas exactement ça.
Je crois qu'il faut que sur chaque ligne (ou chaque ligne non vide) on trouve la somme des 7 cellules non vides précédentes.


C'est quand même pratique ce LET !
Il existe à partir de quelle version ?
Uniquement 365 ? [edit] Apparemment, ça date d'Excel 2021 [/edit]
SI c'est le cas, ça allait m'être plus facile de le faire, la formule que j'ai déjà faite était plus compliquée.
Quant à la fonction LET(), elle existe sur la version Excel pour Microsoft 365 avant que la version 2021 voie le jour.

Bonsoir R@chid :),

Tu devrais intervenir plus souvent. Tes formules me permettent de découvrir les nouvelles fonctions de Excel 365 👍 (telle que PRENDRE()).
:D:D
Ok cher @mapomme, ne t'inquiètes pas tu découvriras in-cha'allah toutes les nouvelles fonctions avec moi, mais en contrepartie tu dois me faire découvrir nouveaux codes, tu es pour moi mieux que ChatGPT.

:D
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
sur le fichier de notre cher @mapomme que je salue au passage.

Total 7 max formule 3 :
VB:
=SI(B2="";"";SOMME(PRENDRE(FILTRE(B$2:B2;B$2:B2<>"");MIN(NB(B$2:B2);-7))))

Total 7 max formule 4 :
Code:
=SIERREUR(SOMME(PRENDRE(FILTRE(B$2:B2;B$2:B2<>"");-7))/((NB(B$2:B2)>6)*(B2<>""));"")


Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33