Somme cumulée - Schéma en arbre

Bonjour,

Je m’excuse par avance si une solution a déjà été apportée, je ne l’ai pas trouvée.

J’ai un reseau représenté sur le schéma ci dessous. Je connais la population rattachée à chaque troncon mais souhaiterais calculer la population cumulée à l’aval.

image

Le tableau ressemble a ca :

Noeud 1Noeud 2Nb habitantsTot habitants cumulés a la main
AB1063
BC524
CD719
DE44
DF88
BG1329
GH1616

Je suppose qu’il faut une somme.si en function des noeuds. C’est a dire ajouter la population si noeud 2 pour le troncon (n) = noeud 1 pour le troncon (n+1) puis noeud 2 (n+1) = noeud 1 (n+2) et ainsi de suite. Mais je n’arrive pas a automatiser le tout.

Merci par avance pour votre aide,

Bonne journée

Bonjour,

En supposant que votre tableau occupe la plage A1:D8 alors, en D2 copiez cette formule:

=SI(B2<>A3;C2;SOMME.SI($B2:$B$8;$B2;$C2:$C$8)+SOMME.SI($A2:$A$8;$B2;$D2:$D$8))

puis tirer vers le bas

Avec le fichier:

Cdlt

Bonjour Arturo83,

Merci beaucoup pour votre réponse. Cependant, cela ne fonctionne que si les troncons sont correctement "ordonnés". Or dans mon cas, ils ont des noms plus compliqués et ne sont pas triés.

Faut-il dans ce cas faire un VBA pour faire des boucles de recherche des noeuds?
Encore merci,
Louise

Pour obtenir une réponse adaptée à vos besoins, il faut que vous fournissiez un fichier le plus représentatif possible de la réalité, sinon, on ne peut se baser que sur ce que vous proposez.

bonjour à tous,

une proposition via une fonction personnalisée. à utiliser dans une cellule comme une fonction excel standard (exemple dans le fichier joint)

=sommemerefille(plagemere,plagefille,plagevaleur,mere)

pour l'explication des paramètres voir le code ci-dessous :

29sommehierachie.xlsm (15.56 Ko)
Function sommemerefille(plagemere, plagefille, plagevaleur, mere)
'fonction personnalisée permettant de faire une somme de valeur selon une arborescence
'plagemere : plage des noeuds mères de l'arborescence
'plagefille : plage des noeuds filles de l'arborescence
'plagevaleur : plage des valeurs associées à la plage fille dont on souhaite faire la somme
'mere : noeud de base pour lequel on souhaite la somme
'fonction récursive
'il ne peut pas y avoir de boucle dans l'arborescence

    somme = 0
    For i = 1 To plagemere.Rows.Count
        If plagemere(i, 1) = mere Then
            somme = somme + sommemerefille(plagemere, plagefille, plagevaleur, plagefille(i, 1))
        End If
        If plagefille(i, 1) = mere Then
            somme = somme + plagevaleur(i, 1)
        End If
    Next i
    sommemerefille = somme
End Function

Bonjour,

Effectivement, je ne pensais pas que cela changerait quelque chose (et c'était également pour expliquer ma problématique que j'ai simplifié l'arbre).

Mais mon tableau ressemble plus à ca :

Noeud 1Noeud 2Nb habitantsTot habitants a la main
AS171063
S17C524
QH1616
B'1J44
B'1F88
S17Q1329
CB'1719
image

Merci Hs2o4 pour votre proposition. Je n'y connais pas grand chose en vba et macros. Cependant, lorsque je clique sur 'Entrée' dans une cellule de formule Sommemerefille de votre excel envoyé, le message "#nom ? " s'affiche. J'ai pourtant vérifié , et votre code est bien dans l'onglet vba.

image

Je vous remercie tous les deux, vos propositions me seront utiles dans tous les cas.

Cordialement,

Louise

Bonjour,

Essayez ceci en D2 et à tirer vers le bas:

=C2+SOMME.SI(A$2:$A$8;B2;D$2:D$8)

avec le fichier

Cdlt

bonjour,

Cependant, lorsque je clique sur 'Entrée' dans une cellule de formule Sommemerefille de votre excel envoyé, le message "#nom ? " s'affiche. J'ai pourtant vérifié , et votre code est bien dans l'onglet vba.

pour que la fonction personnalisée fonctionne, il faut autoriser les macros. Mais Arturo83 () t'a proposé une solution très élégante qui n'a pas besoin de macro.

Merci à vous deux, c'est effectivement bien plus simple que je ne pensais !

Rechercher des sujets similaires à "somme cumulee schema arbre"