Somme sur plusieurs feuilles

Bonsoir,

J'ai un fichier Excel avec des feuilles "Semaine 1", "Semaine 2" etc ... toutes formées de la même manière et j'ai une feuille "RECAP" qui somme les valeurs des cellules B1 de toutes les semaines, pareil pour la cellule B2 etc.

Le problème est que je ne peux pas écrire une formule de la forme :

'Semaine 1'!B1 + ... +'Semaine 52'!B1

car les feuilles ne sont pas encore crées jusqu'à la 52.

Donc j'ai fait ceci :

=SOMME('Semaine 1:Semaine 4'!B1)

ça prend toutes les feuilles entre Semaine 1 et Semaine 4 et peu importe comment elles sont nommées.

Alors je pourrais créer la feuille "Semaine 52" en y mettant des zéros et appliquer cette formule entre la semaine 1 et la semaine 52, ça prendra toutes les feuilles existantes entre la 1 et la 52 mais ça ne me semble pas très robuste.

J'aimerais votre avis, quelles sont les bonnes pratiques ? Comment feriez-vous dans un tel cas ? est-ce qu'il ne faudrait pas faire un SUM.SI ou SI.ENS et tester si les feuilles existent bien ..?

Merci de votre aide, bonne soirée.

Bonsoir,

Quelle est la version d'excel utilisée 2504 c'est la version de MAJ

(2013, 2016, 2019, 2021, 2024, 365)

Cordialement

Je ne sais même pas trop je pense que chez moi c'est 365

capture3

Bonjour,

tu peux très bien utiliser la Feuil52, le tout est de bien insérer les nouvelles entre.
Si tu n'aimes pas tu peux créer une feuille Fin et =SOMME('Semaine 1:Fin'!B1)

Re,

Si ta version d'excel le permet, une proposition avec Power Query.

Pour que cela fonctionne, il faut nommer les tableaux t_semxx

Pour actualiser Onglet Données, Requêtes et connexions, Actualiser tout, il est possible d'automatiser cela avec une instruction VBA.

Cordialement

Merci à vous 2,

Ok je vais regarder avec Power Query mais je ne suis pas encore à l'aise avec.

Je pense que je vais faire une somme 'Semaine 1:RECAP'!B1
mais je ne vais rien mettre dans la cellule B1 de la feuille "RECAP" et mettre un gros warning pour que personne n'aille remplir cette cellule par erreur.
Mais je ne sais pas si je peux faire SOMME('Semaine 1:RECAP'!B1) et écrire le résultat dans la feuille RECAP, c'est comme si une feuille se référençait elle-même ...?

Hello,

vous pouvez masquer la feuille RECAP, elle restera accessible avec les formule, mais attention à ne pas mettre une feuille semaine involontairement après la feuille RECAP

J'ai une seconde question mais qui est très liée à la première.

Je souhaite compter le nombre de fois où il est inscrit "OK" dans la cellule B3 des feuilles 'Semaine 1', .... 'Semaine 52',

j'ai donc naturellement essayé cette formule :

=NB.SI('Semaine 1:Semaine 4'!B3;"OK")

Mais ça ne fonctionne pas.

Ensuite une IA générative ma suggéré la formule :

=SOMMEPROD(NB.SI(INDIRECT(LISTE!A1:A52&"!B3");"OK"))

Où "Liste" est une feuille et la plage A1:A5 contient {"Semaine 1", .... "Semaine 5"} mais ça ne fonctionne pas (je trouve bizarre la syntaxe avec le &).
Bon bref j'ai aussi essayé de l'adapter à mon cas en n'utilisant non pas une feuille "Liste" mais en mettant une liste contenant {"Semaine 1", .... "Semaine 4"} dans ma feuille RECAP, liste à laquelle j'ajouterai les semaines au fur et à mesure.
Ma formule donne donc ça :

=SOMMEPROD(NB.SI(INDIRECT(K13:K17!B3);"OK"))

J'ai essayé plusieurs variantes avec le &, avec des apostrophes avec "*OK*" .... mais rien ne fonctionne.

Merci à vous si vous avez une idée pour faire ça.

Mon fichier :
ça se passe toujours dans la feuille RECAP, en bas j'ai ajouté mes 3 essais (infructueux).

Bonjour à tous,

C'est un problème d’apostrophes, qui sont nécessaires car le nom des feuilles comporte un espace.

Essayez :

=SOMMEPROD(NB.SI(INDIRECT("'"&K14:K17&"'!B3");"OK"))

Bonjour et merci

Oui ça fonctionne avec cette syntaxe !

Maintenant dans mon cas concret : toutes les semaines on ajoute une feuille "semaine X"
je dois donc faire une liste ou un tableau extensible (et non pas le fixer comme ça K14:K17).

j'ai donc essayé avec un tableau qui prend toute la colonne mais j'ai forcément des cellules vides donc ça ne marche pas (les noms de cellules vides ne correspondent à aucun nom de feuille, il faudrait ajouter un test peut-être ...)
et si je fais un tableau de taille limitée je ne vois pas comment le référencer dans ma formule de façon à ce que ça soit dynamique si j'ajoute une autre ligne dans le tableau.

J'ai refait un fichier plus simple

Pour rappel j'essaie de sommer dans la feuille RECAP le nombre de fois où apparait "OK" dans les cellules B1 des feuilles "Semaine 1", .... "Semaine 4" (en tenant compte que je vais ajouter une feuille "Semaine 5" et que la formule doit continuer de fonctionner).

_______________________

Et sinon, y a-t-il moyen de faire plus simple en utilisant une formule de la forme suivante ?

=NB.SI('Semaine 1:Semaine XXX'!B3;"OK")

Bonjour,

Vous n'avez pas bien compris l'intérêt des tableaux : l'objectif est justement de pouvoir les étendre au fur et à mesure sans avoir à changer la formule.

Donc le "1e essai qui fonctionne" n'utilise pas de longueur fixe, si vous rajoutez 1 feuille "semaine 5" puis une ligne dans votre tableau, ça fonctionnera.


PS : sinon il suffit de filtrer le tableau. En G1 :

=SOMME(NB.SI(INDIRECT("'"&FILTRE(Tableau1[Nom des feuilles];Tableau1[Nom des feuilles]<>"")&"'!B1");"OK"))

Bonjour à tous,

Pas nécessaire d'utiliser un tableau comportant des lignes vides, il suffit de rajouter le nom de la nouvelle feuille en dessous, exemple avec Tableau2.

=SOMME(NB.SI(INDIRECT("'"&Tableau2[Nom des feuilles]&"'!B1");"OK"))

Bonsoir à tous !

Une proposition qui évite l'inconvénient de la fonction INDIRECT (aspect volatile de la fonction) en agrégeant toutes les feuilles entre "Début" et "Fin" (ces feuilles restant vierges de données).
La plage utilisée pour l'agrégation (A1:B30) est à adapter.

Merci à tous,

ça y est c'est bon j'ai compris la syntaxe pour la version avec INDIRECT
Pour la solution de JFL c'est très intéressant je ne connaissais pas du tout ce genre de syntaxe LET ... mais au boulot nous ne disposons pas de la fonction GROUPER ce n'est pas grave je vais creuser cette méthode pour d'autres usages !

Merci à tous !

Bonjour,

Vous devez être sur EXCEL 2024 si vous n'avez pas GROUPER.PAR mais ASSEMB.V. Auquel cas renseignez-le sur votre profil svp : "Excel : 2024".

Pour adapter la formule intelligente de JFL a votre version, on peut faire ceci :

=LET(
a; ASSEMB.V(Début:Fin!A1:B30);
f; FILTRE(INDEX(a;;1);INDEX(a;;2)="OK");
u; TRIER(UNIQUE(f));
c; MAP(u;LAMBDA(n;LIGNES(FILTRE(f;f=n))));
ASSEMB.H(u;c)
)

Bonjour à tous !

Bien....

Je vous remercie de ce retour.

Ne pas oublier de modifier votre profil pour la partie concernant votre environnement Excel ( M365).

Rechercher des sujets similaires à "somme feuilles"