Somme.si sur plusieurs feuilles Excel

Bonjour, J’ai besoin d’aide.

J’ai un classeur excell ave 32 onglet. Il y en aura près de 200 à la fin. Ils ont tous la même structure.

Sur une page résumé j’ai la somme de la cellule H492 de tous les onglets. (j’ai fait =SOMME(DEBUT:FIN!H492). Pour cela j’ai ajouté un onglet DEBUT et FIN au début et à la fin des onglet à prendre en compte dans la somme.

Maintenant, dans cette feuille résumée, je veux que la même somme s’effectue mais seulement avec les onglets qui remplissent une condition particulière (C85=1).

Comment faire ? (J’essaye la chose suivante : =SOMME.SI("DEBUT:FIN",C85=1,"DEBUT:FIN_H492"). Mais ça ne marche évidemment pas, sinon je ne serais pas ici.

Mon niveau dans le domaine est plutôt modeste. Un grand merci à ceux qui peuvent m’orienter.

Je joins le fichier. Belle après-midi.

29general.zip (1.05 Mo)

bonjour

ça ne marche pas comme cela

1) tu dois faire une liste des noms d'onglet

2) la formule qui risque de ramer

SOMMEPROD(SOMME.SI(INDIRECT(la liste&"!c85");1;INDIRECT(la liste&"!h492")))

cordialement

Merci beaucoup pour le retour tulipe_4.

Navré pour mon ingnorance, mais comment je fais la liste d'onglets?

D'autre part, c'est manuel? ou y-a-t-il un moyen de faire la liste finale des 200 onglets sans les rentrer un par un?

Bonjour à tous,

Voici une proposition qui tombe à point nommé avec une fonction personnalisée permettant de renvoyant la liste des feuilles selon un intervalle :

Function onglets(debut$, fin$)

Dim ws As Worksheet, temp(), n%
Application.Volatile
For Each ws In Worksheets
    If ws.Index >= Worksheets(debut).Index And ws.Index <= Worksheets(fin).Index Then
        ReDim Preserve temp(n)
        temp(n) = IIf(ws.Name Like "* *", "'" & ws.Name & "'", ws.Name)
        n = n + 1
    End If
Next ws

onglets = temp

End Function

A utiliser dans la formule de Tulipe_4

=SOMMEPROD(SOMME.SI.ENS(INDIRECT(onglets("DEBUT";"FIN")&"!H492");INDIRECT(onglets("DEBUT";"FIN")&"!"&C$16);1))

Ici la fonction perso est onglets(nom début;nom fin). Cette fonction renvoie une liste avec tous les noms de feuilles comprises entre la feuille "DEBUT" et la feuille "FIN".

Cdlt,

re

bha ................ ,il faudra bosser un peu , alors pour eviter les fautes de copies

1) double clic sur le nom de l'onglet >>>Ctrlc et Ctrlv dans la liste , rebelote pour le suivant

sinon il existe une fonction que je ne connais pas : LIRE.CLASSEUR

Bonjour et bienvenue sur le forum

Bonjour à tous

Une variante avec fonction personnalisée.

96general-v1.zip (1.07 Mo)

Bye !

Merci mille à tous les 3.

J’ai bien noté Tulipe 4 pour faire la liste de tous les onglets. Ça marche.

3GB. C’est incroyable. Je ne sais pas comment ça marche, mais ça marche…Pour les profanes comme moi, c’est de la magie. Juste une question. Comment vous faites pour que dans la feuille résumé, les cases avec C85, C86, C87 etc. renvoient directement à la case dans les onglets ?

Merci encore j’en ai presque eut les larmes aux yeux…

Les larmes aux yeux !?

La fonction personnalisée renvoie un tableau (une matrice), la liste de toutes les feuilles entre la feuille "DEBUT" et la feuille "FIN" (Note : cela revient à la solution proposée par tulipe_4 mais sans plage intermédiaire). Le SOMMEPROD permet de "matricialiser" le SOMME.SI.ENS et correspond en quelque sorte à la factorisation de SOMME.SI.ENS(DEBUT!H492;DEBUT!C85;1) + ... + SOMME.SI.ENS(FIN!H492;FIN!C85;1). Voilà, et le INDIRECT permet de transformer du texte (ex : "DEBUT!H492") en son équivalent en terme de référence. Comme son nom l'indique, elle fait indirectement référence à une plage.

Sur la formule, Sélectionnez la partie onglets("DEBUT";FIN") et faites F9, vous comprendrez mieux...

Cdlt,

Merci pour les solutions et les explications. C'est top!

Une belle journée à vous tous

Rechercher des sujets similaires à "somme feuilles"