XL 2010 Analyse présence enfant suivant critères

Foie4

XLDnaute Junior
Bonsoir à tous,
J'aimerais faire une analyse, pour mon asso qui accueille des enfants, du nombre d’heure de présence suivant plusieurs critères que je voudrais sélectionner ou non :

Par Trimestre
Adhèrent (oui ou non)
Age (6 à 18 ans)
Quartier d’habitation (A-B-C-D-E)
Fille / Garçon (F/G)
Jour de semaine (lundi à samedi)
Lieu de l’activité (A-B-C-D-E)
Salle d’activité (A-B-C-D-E)
Activité (foot-basket-dessin-tennis autres...)

Pour info les noms de tous les critères cités sont à titre d’exemple que
je voudrais pouvoir modifier à volonté.

Par exemple je voudrais connaitre le nombre d’heure de présence du 1e et 2e Trimestre de chaque
enfant adhérent qui sont venus les lundis et jeudis, en salle d’activité D et qui ont fait du foot et dessin...

Merci de votre aide, voir explication 2e onglet
Pour info l'asso est sous mac.
 

Pièces jointes

  • Liste Présence 2020.xlsx
    222.3 KB · Affichages: 32

R@chid

XLDnaute Barbatruc
Bonjour,
tu dois remplacer Aout par Août (écrire correctement les mois) afin de ne pas faire une formule très longue.
Une formule matricielle en H8 :
VB:
=SOMME(SIERREUR((ENT((MOIS(1&$M$1:$VP$1)-1)/3)+1=COLONNES($H:H))*($M$6:$VP$6="Total h")*$M8:$VP8;))
@ valider par Ctrl+Maj+Entrée
@ tirer vers le bas et vers la droite


Voir PJ


Cordialement
 

Pièces jointes

  • Foie4_ListePrésence2020_V1.xlsx
    208.1 KB · Affichages: 10

Foie4

XLDnaute Junior
Bonjour R@chid, le forum,
Merci pour cette proposition qui répond à la question des trimestres.
Mais comment faire pour le reste ? Faut il une sorte de tableau dynamique où je peux
sélectionner chaque critère (trimestre, adhèrent, fille-garçon, quartier, salle, activité, lieu, jour de semaine) ?
Bonne journée
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Sur la base du fichier de R@chid : une solution hybride qui permet de ne pas modifier ton tableau.
Les critères sur les colonnes M à VP sont à choisir dans des listes
Les critères sur les colonnes D à G se font par filtre : un sous total affiché au dessus donne le total filtré.
Pour modifier les listes de valeurs des listes déroulantes : voir feuille explication.

Cordialement
 

Pièces jointes

  • Foie4_ListePrésence2020_V2.xlsx
    206.7 KB · Affichages: 19

Foie4

XLDnaute Junior
Bonsoir Dugenou,
Très beau travail, vraiment merci.
Puis je faire une ou deux remarque :
- Lorsque je fais une sélection de "Lieu" "Salle" ou "Activité", il ne se passe rien, résultat 0.
Est ce que j'ai loupé quelques choses ?
- Est ce possible de sélectionner plusieurs critères ensembles ?
Par exemple
pour jour de semaine lundi+samedi ou mercredi-jeudi-vendredi etc...
pour mois pareil janvier+mars ou juin+septembre+novembre etc...
pour Lieu : Lieu A+C ou Lieu B+D+A etc...
pour Salle : Salle A+B ou Salle C+D+A etc...
pour activité : foot+basket ou tennis+dessin+foot
Pour les âges peut on commencer à 6 ans (de 6 à 18 ans)
Cordialement
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Vous pouvez sélectionner plusieurs critères sur les colonnes, par contre je n'ai pas prévu plusieurs critères sur les listes déroulantes au dessus. On a déjà une formule sur deux lignes, si on ajoute des possibilités ça va devenir ingérable : il vaudrait mieux passer par un userform et une macro, mais ce n'est pas dans mes moyens.
Désolé
 

Foie4

XLDnaute Junior
Bonsoir à tous,
J'ai repris la proposition de Dugenou, et j'ai essayé de l'adapter, malgré de nombreuses heures ça ne marche pas.
Je voudrais cumuler plusieurs critères simultanément Mois (1 à 12), Jour (1 à 7), Lieu (1 à 5 ou rien), Salle (1 à 4 ou rien), Activité (1 à illimité ou rien).
Voir Ligne 9 en jaune pour l'essai de formule (H9 à K9).
Merci de votre aide.
 

Pièces jointes

  • Foie4_ListePrésence2020_V3.xlsx
    224 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour Foie4, R@chid, Dugenou,

Voyez le fichier joint et cette macro dans le code de la 1ère feuille :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim crit As Range, ub1%, critere1(), i%, vide1, ub2%, critere2(), vide2, P As Range, tablo, j%, x$, flag1, flag2
Set crit = [A2:C7]: ub1 = crit.Rows.Count: ReDim critere1(1 To ub1) 'plage à adapter
For i = 1 To ub1
    If Application.CountA(crit.Rows(i)) Then _
        critere1(i) = IIf(crit(i, 1) = "", "*", crit(i, 1)) & IIf(crit(i, 2) = "", "*", crit(i, 2)) & IIf(crit(i, 3) = "", "*", crit(i, 3))
Next
If Application.CountA(crit) = 0 Then vide1 = True
Set crit = [E2:F7]: ub2 = crit.Rows.Count: ReDim critere2(1 To ub2) 'plage à adapter
For i = 1 To ub2
    If Application.CountA(crit.Rows(i)) Then _
        critere2(i) = IIf(crit(i, 1) = "", "*", crit(i, 1)) & IIf(crit(i, 2) = "", "*", crit(i, 2))
Next
If Application.CountA(crit) = 0 Then vide2 = True
Set P = [M1].CurrentRegion.Resize(3)
tablo = P 'matrice, plus rapide
For j = 1 To UBound(tablo, 2) Step 3
    tablo(3, j + 2) = "" 'RAZ
    x = tablo(1, j) & tablo(1, j + 2)
    flag1 = vide2
    For i = 1 To ub2
        If x Like critere2(i) Then flag1 = True
    Next i
    x = tablo(2, j) & tablo(2, j + 1) & tablo(2, j + 2)
    flag2 = vide1
    For i = 1 To ub1
        If x Like critere1(i) Then flag2 = True: Exit For
    Next i
    If flag1 And flag2 Then tablo(3, j + 2) = 1 + Int((Month("1/" & tablo(1, j + 2)) - 1) / 3) 'repère le trimestre en ligne 3
Next j
'---restitution---
Application.EnableEvents = False 'désactive les évènements
P = tablo
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

  • Filtrer(1).xlsm
    214.7 KB · Affichages: 18
Dernière édition:

Foie4

XLDnaute Junior
Bonsoir job75,
Merci pour cette proposition qui prend en compte mes questions.
Pour simplifier est ce possible pour chaque critère (lieu, salle, activité, jour, mois) d'avoir une bande déroulante et sélectionner rien ou plusieurs critères en même temps :
- par exemple sélectionner janvier+février+mars etc...
ou (et) lundi+jeudi+vendredi etc...
Bonne soirée
 

Statistiques des forums

Discussions
312 338
Messages
2 087 394
Membres
103 537
dernier inscrit
alisafred974