Macro somme plusieurs feuilles

franck70

XLDnaute Junior
Bonjour à tous,

J'ai fait une macro qui va dupliquer un onglet modèle un certain nombres de fois selon une liste établie dans un onglet "Liste entité". Par exemple s'il y a 3 entités, il va créer 3 onglets avec le tableau prévu dans l'onglet modèle et il nommera l'onglet de cette entité du nom de l'entité. Cette partie fonctionne bien

Mon problème, c'est que j'ai un onglet "Compil" qui doit sommer toutes les entités (et donc tous les onglets créés dont le nombre peut varier). J'avais pensé à une formule3D, mais ça ne semble pas fonctionner (j'ai laissé ma formule qui ne fonctionne pas en C2 de l'onglet compil). Mais de toute façon, comme le nombre d'entité est variable, je me disais que je ne peux probablement pas utiliser une fonction (peut-être à tort).

Sauriez-vous comment je peux arriver à sommer tous mes onglets, en sachant que le nombre de feuille à sommer est variable et qu'il est défini dans l'onglet "Liste entité" ?

Merci beaucoup à tous pour votre aide, en espérant avoir été assez clair dans mon descriptif (n'hésitez pas si besoin de précisions ou de clarifications !)
 

Pièces jointes

  • macro creation feuille.xlsm
    23.9 KB · Affichages: 27

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @franck70,

Peut-être avec une fonction personnalisée dans la cellule C2 à tirer vers le bas.
Le code est dans module4 :
VB:
Function SOMMEx(Entites As Range, Cellule As Range)
Dim x, Adr$, xcell

  On Error Resume Next
  Adr = Cellule.Address(0, 0)
  For Each xcell In Entites
    x = x + Worksheets(xcell.Value).Range(Adr)
  Next xcell
  SOMMEx = x
End Function

edit : bonsoir @zebanx :)
 

Pièces jointes

  • franck70- macro creation feuille- v1.xlsm
    29.5 KB · Affichages: 44
Dernière édition:

franck70

XLDnaute Junior
Bonsoir mapomme,

J'ai regardé et effectivement, ça semble bien fonctionner (je suis prudent car je n'ai pas encore essayé sur mon fichier avec beaucoup plus de cellules etc... :) )
Merci beaucoup pour ton aide
Pour que je comprenne bien et que je puisse l'adapter ou le réutiliser, à quel endroit du code on détermine la liste des onglets à prendre . Je vois bien "Entites" dans le code, mais ça semble être un terme que tu as défini et avec mes connaissance limitées, je n'arrive pas à comprendre comment ça fonctionne:(

Merci encore énormément pour le coup de main
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Je vois bien "Entites" dans le code

Entites est un des deux paramètres de la fonction SOMMEx
Il est défini comme étant un range (autrement dit, dans notre cas, une plage contigüe de cellules).

On parcourt toutes les cellules de la plage Entites, et pour chaque cellule de Entités on considère la feuille de nom correspondant à cette cellule et dans cette feuille on cherche la cellule d'adresse Adr. On prend la valeur de la cellule Adr et on l'ajoute à x.
Quand on a parcouru toutes les cellules de Entités, la boucle est terminée et on ramène la somme en la plaçant dans SOMMEx.

On Error Resume Next permet de sauter les cas où la feuille n'existe pas ou bien la valeur de la cellule à sommer n'est pas un nombre.

Quand on utilise cette fonction dans la cellule C2 de la feuille "Compil", la formule s'écrit :
Code:
=SOMMEx(Tableau1[CODE];C2)
  • Entites correspond à la colonne Tableau1[ CODE] qui est la première colonne de nom "CODE" du tableau de la feuille "Liste entité" (colonne qui contient les noms de toutes les feuilles à prendre en compte)
  • C2 correspond à l'adresse des cellules à sommer.
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour à tous

Si Excel 2016 et tableaux structurés c'est faisable sans code avec PowerQuery et, si les tableaux évoluent, une simple actualisation recalcule la synthèse.

PowerQuery peut aussi être utilisé en add on sur 2010 et 2013

Pourquoi ne mettez vous pas votre version dans votre profil... C'est prévu...
 

Discussions similaires

Réponses
12
Affichages
217

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40