XL 2016 SOMME INDEX entre deux onglets

emeline51

XLDnaute Nouveau
Bonjour,

Je me permets de venir vers vous pour vous demander de l'aide.
Ci-joint un fichier excel pour alimenter mon problème

L'objectif est d’additionner dans l'onglet Synthèse, les valeurs des onglets compris entre les onglets aaa et zzz (pour me permettre de rajouter des onglets au fil du temps), selon les critères semaines (ligne1) et personnes (colonne a).
J'ai bien la formule pour aller chercher dans un onglet précis (cf. tableau1), mais je n'arrive pas à sommer les onglets.
Quelqu'un aurait la solution ?

Merci d'avance pour votre aide
Emeline
 

Pièces jointes

  • excel.xlsx
    14.4 KB · Affichages: 20
Solution
Bonjour,
Un essai en PJ, on commence à compter de la feuille aaa jusqu'à zzz, avec :
VB:
Function Calcule(Qui, Semaine)
Dim Somme, Sh, A%, B%, Ligne%, Colonne%, Début%, Fin%
Somme = 0
Début = 0: Fin = 1
For Each Sh In Worksheets
    If Sh.Name <> "Synthese" Then   ' On ignore la feuille Synthese
        If Sh.Name = "aaa" Then Début = 1   ' On commence à compter à partir de la feuille aaa
        A = Application.CountIf(Sheets(Sh.Name).Range("A:A"), Qui)      ' "Qui" existe t il ?
        B = Application.CountIf(Sheets(Sh.Name).Range("1:1"), Semaine)  ' "Semaine" existe t il ?
        If A > 0 And B > 0 And Début = 1 And Fin = 1 Then ' Si "Qui" et "Semaine" existent alors on somme la valeur trouvée
            Ligne =...

emeline51

XLDnaute Nouveau
Rajoutez Application.Volatile :
VB:
Function Calcule(Qui, Semaine)
Dim Somme, Sh, A%, B%, Ligne%, Colonne%, Début%, Fin%
Application.Volatile
Somme = 0
Début = 0: Fin = 1
La fonction sera réactulaisée à chaque nouveau recalcul de la feuille.
( mais comme peut être lourd suivant les fonctions, par défaut je ne le mets pas de base.)

Ok effectivement ça semble ralentir pas mal le fichier. A voir dans la pratique quotidienne. A tout hasard si j'insère un bouton permettant l'actualisation des données une fois le fichier complété serait un moyen de rendre le fichier moins lourd ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
... c'est pour ça qu'on évite ! ;)
Retirez cette ligne Volatile. Dans votre feuille Synthèse, on peut mettre du code . Collez y :
VB:
Sub Worksheet_Activate()
     Calculate
End Sub
Les calculs s'effectueront automatiquement que lorsque vous sélectionnerez la feuille Synthèse. C'est mieux qu'un bouton.
1.jpg
 

emeline51

XLDnaute Nouveau
... c'est pour ça qu'on évite ! ;)
Retirez cette ligne Volatile. Dans votre feuille Synthèse, on peut mettre du code . Collez y :
VB:
Sub Worksheet_Activate()
     Calculate
End Sub
Les calculs s'effectueront automatiquement que lorsque vous sélectionnerez la feuille Synthèse. C'est mieux qu'un bouton.
Regarde la pièce jointe 1087264

Il y en a tellement a apprendre sur Excel !
Par contre le code ne fonctionne pas, l'actualisation ne se fait pas
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups! Le recalcul ne se fait pas car les deux paramètres dans la formule n'ont pas bougés.
Donc on va tricher.
Modifiez votre Worksheet_Activate :
Code:
Sub Worksheet_Activate()
    Ancien = [B1]
    [B1] = Ancien
    Calculate
End Sub
Comme la cellule B1 à changer, même si elle conserve la même valeur, tout est recalculé.
Voir PJ.
 

Pièces jointes

  • excel (4).xlsm
    24.6 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 719
Messages
2 081 881
Membres
101 829
dernier inscrit
listener75