Somme conditionnelle sur plusieurs feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

krystof_ii

XLDnaute Occasionnel
Bonjour à tous,
Qq'un saurait-il comment faire une somme conditionnelle sur plusieurs feuille.

Mon 'projet' : a partir de feuilles de pointage individuel, je souhaiterais faire la somme des heures passées par affaire (dans une feuille de synthese).
Voir fichier joint.
Dans le fichier, il n'existe que 2 pers. mais en réalité je dois en gérer env.40


Pour faire la somme conditionnelle sur une seule feuille : pas de pb j'utilise la fonction somme.si.
Dans mon fichier d'exemple se serait : =SOMME.SI(A7:A25;AI8;AG7:AG25)

Peut-on utiliser la meme fonction pour plusieurs feuille : du style =SOMME.SI(DUPONT😀URAND!A7:A25;$A$2;DUPONT😀URAND!AG7:AG25) ?
Sinon, comment pourrais-je faire ?


Par avance merci,
 

Pièces jointes

Re : Somme conditionnelle sur plusieurs feuille

Certes c'est une solution - que je n'avais pas envisagé ;-(
Par contre, je devrais effectuer une somme sur plus de 40 feuilles.

Du cout, ma formule serait tres tres longue.

Du coup 2 possibilités :
- existe-t-il une fonction qui puisse calculer cela sur une plage de plusieurs feuille ?
- sinon, je devrais créer une function sommeplsfeuille avec réccurence des feuilles ?
 
Re : Somme conditionnelle sur plusieurs feuille

Finalement, je pensais pouvoir me débrouiller tout seul ... mais en fait non 🙁

Je souhaites que le récapitulatif des heures passées soit sur un autre fichier que celui du pointage :
1 fichier récapitulatif des heures par affaires,
12 fichier pointage (1 par mois).

J'ai essayé, sans résultat, plusieurs méthodes :
- plage "Listeonglet" définie dans chaque fichier pointage,
- plage "ListeOngletMois" définie dans le fichier récapitulatif.

Qq'un aurait-il une solution à me proposer ?
(en fichiers joint : le fichier récapitulatif des heures par affaires & 1 fichier de pointage).

Nota : le nb et les noms des onglets peuvent changer d'un mois à l'autre.

Par avance, merci
 

Pièces jointes

Re : Somme conditionnelle sur plusieurs feuille

Merci pour ta suggestion,

Mon soucis c'est qu'il faudrait que je mette ts les fichiers de pointage à jour par rapport à ma liste d'affaires (par macro auto_open par exemple).

J'aurais préférer avoir une solution qui me permette d'exploiter une liste de valeur liée à autre fichier ...
 
Re : Somme conditionnelle sur plusieurs feuille

Je reformule différemment mon pb :
1° Pour chaque mois, j'utilise un fichier de pointage du personnel (1 onglet par personnel pour le mois; n°affaire dans la colonne A ; Total affaire colonne AG)
2° Le suivi des affaires s'effectue dans un fichier à part.

Grace au forum (et Monique ; que je remercie), je sais calculer par affaire le total des heures pointées :
Une plage nommée "ListOnglets"
et une formule "en 3D" :
=SOMMEPROD(SOMME.SI(INDIRECT(ListOnglets&"!A7:A25");A2;INDIRECT(ListOnglets&"!AG7:AG25")))

Ce que j'aurais souhaité c'est que le fichier récapitulatif calcul directement depuis chacun des fichiers de pointage les heures passés;
en d'autre terme, il faudrait faire appel à "ListOnglets" défini pour chaque fichier mensuel de pointage.

Qq'un aurait-il une solution en ce sens ?
Ou n'existe-t-il pas de solution à mon probleme ?
 

Pièces jointes

Re : Somme conditionnelle sur plusieurs feuille

un grand Merci à tous (et particulierement à Monique et Boisgontier).

Grâce à vous j'ai résolu mon probleme :
- à l'ouverture de mon fichier récapitulatif, j'ouvre les 2 fichiers correspondants aux 2 derniers mois de pointage,
- j'ai créé 2 plage variable correspondant au '[nom du fichier] & Onglet
- j'ai appliqué la superbe formule 3D (convertie en 'VBA')
- je copie colle les valeurs (afin d'alleger Excel dans les calculs)
- je ferme les 2 fichiers de pointage.

Pour ceux que ca interresse, ci-dessous le code :
Sub auto_open()
'
' ouvrir_fichiers Macro
' Macro enregistrée le 30/10/2010 par krys
'
Dim i As Long
Dim fichier_synthese, fichier_mois_N, fichier_mois_N1 As String

'
fichier_synthese = ActiveWorkbook.Name

'désactivation des calculs auto
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With

'-------------
'Ouverture du mois N
'-------------
Workbooks.Open(Filename:=Sheets("ListOnglets").Range("B2")).RunAutoMacros Which:=xlAutoOpen
fichier_mois_N = ActiveWorkbook.Name

Workbooks(fichier_synthese).Activate
Sheets("ListOnglets").Select
Range("B4").Select
Do
Selection.ClearContents
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Value = ""
Range("B4").Select
For i = 1 To Workbooks(fichier_mois_N).Worksheets.Count
ActiveCell.Offset(i - 1, 0).Value = "[" & Range("B3") & "]" & Workbooks(fichier_mois_N).Sheets(i).Name & "'"
Next i

'-------------
'Ouverture du mois N+1
'-------------
Workbooks.Open(Filename:=Sheets("ListOnglets").Range("C2")).RunAutoMacros Which:=xlAutoOpen
fichier_mois_N1 = ActiveWorkbook.Name

Workbooks(fichier_synthese).Activate
Sheets("ListOnglets").Select
Range("C4").Select
Do
Selection.ClearContents
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Value = ""
Range("C4").Select
For i = 1 To Workbooks(fichier_mois_N1).Worksheets.Count
ActiveCell.Offset(i - 1, 0).Value = "[" & Range("C3") & "]" & Workbooks(fichier_mois_N1).Sheets(i).Name & "'"
Next i

'----------------
'Mise à jour des calculs 'bleus'
'----------------
Range("P3").Select
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(SUMIF(INDIRECT(""'""&Mois_N1&""!$A$8:$A$25""),RC1,INDIRECT(""'""&Mois_N1&""!$AG$8:$AG$25"")))+SUMPRODUCT(SUMIF(INDIRECT(""'""&Mois_N1&""!$A$8:$A$25""),RC1&"" HN"",INDIRECT(""'""&Mois_N1&""!$AG$8:$AG$25"")))*2"
Range("Q3").Select
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(SUMIF(INDIRECT(""'""&Mois_N&""!$A$8:$A$25""),RC1,INDIRECT(""'""&Mois_N&""!$AG$8:$AG$25"")))+SUMPRODUCT(SUMIF(INDIRECT(""'""&Mois_N&""!$A$8:$A$25""),RC1&"" HN"",INDIRECT(""'""&Mois_N&""!$AG$8:$AG$25"")))*2"
Range("P3:Q3").Select
Selection.Copy
Selection.End(xlDown).Select
Range("P3:Q" & ActiveCell.Row).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'--------
'Fermeture des fichiers pointage
'---------
Workbooks(fichier_mois_N).Close
Workbooks(fichier_mois_N1).Close

'ré-activation des calculs auto
With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With

End Sub

Attention : je n'ai pas finalisé le code : pas de test sur fichier déjà ouvert !

ENCORE UN GRAND MERCI
 
Re : Somme conditionnelle sur plusieurs feuille

Bonjour le forum
Je réactive le post car je me suis inspiré de celui ci pour résoudre un problème.
J'ai surtout utilisé la réponse de Monique utilisant :

Une plage nommée "ListOnglets"
et une formule "en 3D" :

Code :
SOMMEPROD(SOMME.SI(INDIRECT(ListOnglets&"!A7:A25");A2;INDIRECT(ListOnglets&"!AG7:AG25")))

Mon problème c'est que cela ne fonctionne pas.
L'objectif est de ne pas utiliser de macro car la finalité de l'outil servira à une personne ayant aucune connaissance en vba

Merci à vous pour votre aide, je vous joins un fichier pour modèle de ce que j'ai fait.
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour