Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 SommeProd en mode Function

GADENSEB

XLDnaute Impliqué
Bonjour Le Forum
Pour le fichier suivant je souhaiterais faire des sommeprod en version fonction
mais j'ai un #Valeur ....

Code:
Function SumProd()
    Dim Ws As Worksheet
    'Définit une variable qui va représenter une cellule
    Dim Cell As Rang

For Each Cell In Ws.Range("B6:B10")  'cellule vide dans la colonne -2
Toto = "=SUMPRODUCT((LIGNE=RC[-2])*(FUTUR=""non"")*(BQ=""oui"")*(DEBITCREDIT))"
calcul = Toto
Next Cell
End Function

qqn aurait une idée ?
Bonne am
Seb
 

Pièces jointes

  • OPTIMISER LES SOMMEPROD - V0.xlsm
    26.9 KB · Affichages: 65

Dranreb

XLDnaute Barbatruc
Obtenu ceci :
Avec ce code :
VB:
Sub RapportSynthèse()
Dim Données As Collection, LIGNE As SsGroup, FUTUR As SsGroup, BQ As SsGroup, Détail, _
   TotG As Currency, TotFut As Currency, TotBQ As Currency, TotLig As Currency, T(1 To 500, 1 To 4), L As Long
Set Données = GroupOrg(Feuil2.[A2:N2], 10, 11, 9)
For Each FUTUR In Données
   L = L + 1
   T(L, 1) = "Futur=" & FUTUR.Id
   TotFut = 0
   For Each BQ In FUTUR.Contenu
      L = L + 1
      T(L, 2) = "BQ=" & BQ.Id
      TotBQ = 0
      For Each LIGNE In BQ.Contenu
         L = L + 1
         T(L, 3) = LIGNE.Id
         TotLig = 0
         For Each Détail In LIGNE.Contenu
            TotLig = TotLig + Détail(14): Next Détail
         T(L, 4) = TotLig:
         TotBQ = TotBQ + TotLig: Next LIGNE
      If BQ.Count > 1 Then L = L + 1: T(L, 2) = "    — Total BQ=" & BQ.Id: T(L, 4) = TotBQ
      TotFut = TotFut + TotBQ: Next BQ
   If FUTUR.Count > 1 Then L = L + 1: T(L, 1) = "    — Total Futur=" & FUTUR.Id: T(L, 4) = TotFut
   TotG = TotG + TotFut: Next FUTUR
L = L + 1: T(L, 1) = "Total général": T(L, 4) = TotG
Feuil1.[B3].Resize(500, 4).Value = T
End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…