SOMMEPROD sans lignes masquées [Résolu/Fermé]

Signaler
Messages postés
26
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
31 août 2015
-
Messages postés
26
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
31 août 2015
-
Bonjour,

Je cherche une fonction qui me permette d'obtenir un prix total en multipliant la colonne contenant le nombre de pièces commandées par la colonne contenant le prix unitaire de ces pièces.
SOMMEPROD est conçu pour ça mais quand est il quand on cache certaines lignes (articles que l'on ne souhaite pas commander) et que l'on cherche le prix total sans prendre en compte ces pièces (sans prendre en compte les lignes masquées).

Avez vous une idée ?

Je suis parti sur la piste de la fonction SOUS.TOTAL mais sans succès.

Merci d'avance et bonne aprem.

1 réponse

Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 010
Bonjour

Deux idées (trop) simples
1. pour les pièces non commandées tu peux mettre la qté à 0
2. ajouter une colonne pour marquer les pièces commandées

Sinon, peut être via une macro

Cordialement
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 010
Une fonction personnalisée vba

Public Function sp(plage1 As Range, plage2 As Range)
Dim li As Long, s As Single, lideb As Long, nbli As Long, lili As Long
If plage1.Rows.Count <> plage2.Rows.Count Or plage1.Columns.Count * plage2.Columns.Count <> 1 Then
  sp = "erreur"
Else
  s = 0
  lideb = plage1.Cells(1, 1).Row
  nbli = plage1.Rows.Count
  For li = 1 To nbli
    lili = lideb + li - 1
    If Rows(lili).Hidden = False Then
      s = s + plage1.Cells(li, 1) * plage2.Cells(li, 1)
    End If
  Next li
End If
sp = s
End Function


Cordialement
Messages postés
26
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
31 août 2015

merci ccm81, je vais tester cette macro
Messages postés
26
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
31 août 2015

Bonjour à tous et merci pour votre aide. j'ai finalement adopté une solution simple qui répond à mon besoin, elle pourra sans doute en dépanner plus d'un.
J'applique la fonction Sous.Total(103, une cellule de la même ligne) en bout de ligne. Cette fonction me renvoie la valeur 1 quand cette ligne est affiché et 0 quand celle ci est cachée.
Il ne reste plus qu'à inclure cette cellule dans les somme.prod correspondant. Si la ligne est caché, les prix correspondant à l'article caché sont multipliés par 0 donc ne sont pas pris en compte, dans le cas contraire, la fonction somme.pro opère me donnant le le produit du nombre d'article par son prix unitaire.

ex:
en colonne A le nombre d'article vendu
en colonne B leur pris unitaire
en colonne C l'indicateur SOUS.TOTAL(103,A1).. etc

le total:
=SOMMEPROD(($A6:$A2000)*($B6:$B2000)*($C6:$C2000))

Bonne fin de journée