SOMMEPROD sans lignes masquées

Résolu/Fermé
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015 - Modifié par Stephxx le 21/08/2015 à 15:10
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015 - 31 août 2015 à 10:33
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

ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
Modifié par ccm81 le 21/08/2015 à 16:02
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
0
ccm81 Messages postés 10904 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 décembre 2024 2 428
21 août 2015 à 16:18
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
0
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
21 août 2015 à 17:17
merci ccm81, je vais tester cette macro
0
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
31 août 2015 à 10:33
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
0