Somme dans une plage en fonction d'une base de donnés

Bonjour à tous

Je souhaiterai faire la somme dans une plage et de renvoyer les résultats en fonction d'une basse de donnée (conditions).

Pas sûr que ma demande soit très claire, le fichier joint et le résultat attendu seront certainement plus explicites

Le but étant de trouver la bonne formule normal ou matricielle (non VBA).

Merciiii d'avance de votre aide

Bonjour le forum,

Voir le fichier joint.

15ca.xlsx (11.84 Ko)

Bonsoir,

Merci, mais je souhaiterais une formule unique sans calcul intermédiaire.

Ca marche aussi avec 2 séries de SOMME.SI qui évitent les soucis de ligne éventuellement vide.

Bonsoir,

Je n'ai pas de solution avec les matricielles classiques (en une formule).

Reste la possibilité d'une fonction personnalisée (relativement simple)

Function VENTESTYPE(TType As Range, VtesMod As Range, CrType As String)
    Dim TT, VM, i%, j%
    Application.Volatile
    TT = TType.Value: VM = VtesMod.Value
    For i = 1 To UBound(VM, 1)
        For j = 1 To UBound(TT, 1)
            If TT(j, 2) = VM(i, 1) Then
                If TT(j, 1) <> CrType Then VM(i, 2) = 0: Exit For
            End If
        Next j
    Next i
    VENTESTYPE = WorksheetFunction.Sum(VM)
End Function

Les arguments sont le tableau Base type-modèle, les tableau des ventes par modèle, le critère type recherché.

Cordialement.

Re,

J'avais fait une autre fonction personnalisée (solution à mi-chemin de la précédente) fonction opérant une substitution de valeurs dans la matrice de référence et renvoyant la matrice modifiée, permettant son utilisation dans une formule de type classique avec SOMMEPROD.

Elle figure dans le classeur. J'y ai également très légèrement modifié la première fonction...

Mais je me suis repenché sur les fonctions classiques (un point noté dans mes essais me turlupinait) et effectivement il est possible d'en composer une :

=SOMMEPROD((RECHERCHE($G$6:$G$18;$J$6:$K$13)=C19)*$H$6:$H$18)

La condition est d'inverser le tableau Base : modèle en 1re colonne et type dans la 2e, et de le trier dans l'ordre croissant des modèles (ce qui est fait ici en J:K). La fonction RECHERCHE peut alors renvoyer une matrice où les valeurs de la 2e col. sont substituées à celles de la 1re...

jcn a écrit :

Ca marche aussi avec 2 séries de SOMME.SI qui évitent les soucis de ligne éventuellement vide.

Pas de problème de ligne vide non plus avec les formules que je propose.

jcn a écrit :

je souhaiterais une formule unique sans calcul intermédiaire.

D19 :

=SOMMEPROD(($G$6:$G$18={"Mercedes"."BMW"})*($H$6:$H$18))
11ca-v2.xlsx (11.64 Ko)

salut les jeunes

la Formule est matricielle ;malgrè le SOMMEPROD

10jcn.xlsx (10.75 Ko)

en une seule operation

cordialement

Bon sang... ! Et j'ai déjà utilisé ça en plus !

Je l'ai pas inventée ( ) mais je me souviens avoir eu passé du temps à la décortiquer...

Juste une petite rectif (de "plume") Tulipe :

=SOMMEPROD(SOMME.SI(G$6:G$18;SI(C$6:C$13=C19;D$6:D$13);H$6:H$18))

Bonjour à tous

bonjour

en effet ; mais lors de la mise au point ,j'ai voulu "echapper" des eventuelles renvois d'erreur en creant desmatrices carrées ; bien sur SOMME.SI n'est pas sujet a ça , je l'ai laissé quand meme .......

cordialement

Bonne journée à toi !

Bonjour à tous,

Désolé pour le délai de réponse, mais à un GRAND MERCI à tous pour votre contribution.

Le résultat proposé par Tulip_4 f (jcn.xlsx) fonctionne parfaitement même sur des colonnes entières avec des vides ou du texte éventuels.

Un seul mot : BRAVO !

Rechercher des sujets similaires à "somme plage fonction base donnes"