Addition si existe dans une liste

David

XLDnaute Occasionnel
Bonjour à tous,

Est il possible d'additionner des sommes par rapport au contenu d'une cellule si elle se trouve dans une liste?

C'est pas super clair, je sais, aussi je vous mets un fichier en exemple au cas ou.

Merci
 

Pièces jointes

  • AdditionListe.xlsx
    9 KB · Affichages: 9

David

XLDnaute Occasionnel
Merci Sylvanu,
C'est presque ça, mais je vais avoir de nombreuses listes et références et je ne pourrais taper une formule pour chaque addition, vu que ça pourrait en plus être dans n'importe quel ordre et les colonnes D pourraient contenir plusieurs centaines de références.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Alors mettez un fichier plus explicite.
Où se trouve la liste à additionner, quels sont les critères à chercher ?
On ne peut que répondre aux questions posées, sans imaginer ce qu'est votre fichier final.
Pourquoi dans la liste Addition y a t-il Test4 et Test6 ? Doit on se focaliser sur la couleurs des cellules ?
 

David

XLDnaute Occasionnel
La couleur des cellules est la juste pour indiquer les critères et ce qui devrait s’additionner.
Les TestX sont la pour indiquer les références, il ne peut y avoir la même référence dans 2 listes.

Il faut additionner la colonne E dans C3 si TestX se trouve dans la liste addition dans C4 Il faut additionner la colonne E si TestX se trouve dans la liste addition2.

Si on regarde le fichier exemple dans la liste addition il y a Test1, Test3 et Test6, il faut donc qu'en C3 il additionne Test1 + Test3 + Test6 pour un total de 8.

J'espère que c'est plus clair.
Je joins un nouveau fichier.

Merci
 

Pièces jointes

  • AdditionListe.xlsx
    12.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec une fonction perso à tester :
VB:
Function Additionner(Criteres As Range, ListeRef As Range, ListeSomme As Range)
Additionner = 0
For Each c In Criteres
    If Not IsError(Application.Match(c, ListeRef, 0)) Then
        Additionner = Additionner + ListeSomme.Cells(Application.Match(c, ListeRef, 0), 1)
    End If
Next
End Function
Elle est universelle, la taille des plages est déterminée dans la formule. Ce qui la rend souple.
 

Pièces jointes

  • AdditionListe (1).xlsm
    23.3 KB · Affichages: 4

Discussions similaires

Réponses
7
Affichages
439

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa