SOMMEPROD sans lignes masquées

Résolu
Stephxx Messages postés 26 Statut Membre -  
Stephxx Messages postés 26 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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
    2. Stephxx Messages postés 26 Statut Membre
       
      merci ccm81, je vais tester cette macro
      0
    3. Stephxx Messages postés 26 Statut Membre
       
      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