Bonjour à toutes & à tous,
Bonjour
@bruno972 , bonjour
@job75
J'ai oublié de poster ma solution !
Je cherchais
pour le fun une solution sans macro et sans formule matricielle (le coté matricielle étant pris en charge par les noms définis)
C'est forcément un peu alambiqué (et c'est un euphémisme)
.
Après une petite correction pour EXCEL2013 la voici :
Accrochons-nous !!!
J'ai transformé tes listes en tableaux structurés, j'ai ajouté une feuille "Tables" pour contenir les choix de données (Noms et type d'heures sup), ils s'étendrons automatiquement quand tu ajouteras des données
Tableaux Structurés :
Nom du tableau | Plage de données (hors entêtes) | Contenu |
---|
tb_Noms | =Tables!$A$2:$B$7 | Nom et index des salariés |
tb_TypeHS | =Tables!$D$2:$D$5 | Type d'heures Sup |
tb_Relevé | ='Suivi HS'!$A$2:$I$16 | Relevé des heures Sup |
tb_Récap | ='Suivi HS'!$K$2:$V$7 | Récapitulation des Heures Sup |
J'ai créé des noms définis pour les validations de données (choix grâce à des listes) :
Noms Pour choix dans Validation de données
Noms | Définition | Contenus |
---|
lst_Noms | =tb_Noms[Nom] | Liste des noms (pour choisir) |
lst_TypeHS | =TypeHS[type HS] | Liste des types de HS (pour choisir) |
Noms pour contenir les types d'heures sup
Noms | Définitions | Contenus |
---|
HS_VM | =Tables!$D$2 | matin HS |
HS_VAM | =Tables!$D$3 | après midi HS |
HS_VN | =Tables!$D$4 | nuit HS |
HS_SM | =Tables!$D$5 | Smatin HS |
Les noms HS_VM, HS_VAM, HS_VN, HS_SM sont utilisés dans les formules pour ne pas écrire les intitulés "en dur" (si tu veux changer les intitulés, tu le fais une seule fois dans le tableau tb_TypeHS, les formules suivent)
Noms pour concaténer les N° de semaines
Noms | Définitions | Contenus |
---|
Formule_VMouAM | =(tb_Relevé[[#Cette ligne];[EQUIPE]]=HS_VM)+(tb_Relevé[[#Cette ligne];[EQUIPE]]=HS_VAM) MIN(SOMMEPROD((('Suivi HS'!$E$1:$E1=HS_VM)+('Suivi HS'!$E$1:$E1=HS_VAM))*('Suivi HS'!$D$1:$D1=tb_Relevé[[#Cette ligne];[NOM]]))+1;2) tb_Relevé[[#Cette ligne]; | Concatène les N° de semaine V M ou AM jusqu'à "cette ligne" (En ligne 2) |
Formule_VN | =tb_Relevé[[#Cette ligne];[EQUIPE]]=HS_VN MIN(SOMMEPROD(('Suivi HS'!$E$1:$E1=HS_VN)*('Suivi HS'!$D$1:$D1=tb_Relevé[[#Cette ligne];[NOM]]))+1;2) tb_Relevé[[#Cette ligne];[SEMAINE]] 'Suivi HS'!$G$1:$G1 'Suivi HS'!$D$1:$D1 tb_Relevé[[#Cette ligne];[NOM]] | Concatène les N° de semaine V N
jusqu'à "cette ligne"
(En ligne 2) |
Formule_SM | =tb_Relevé[[#Cette ligne];[EQUIPE]]=HS_SM MIN(SOMMEPROD(('Suivi HS'!$E$1:$E1=HS_SM)*('Suivi HS'!$D$1:$D1=tb_Relevé[[#Cette ligne];[NOM]]))+1;2) tb_Relevé[[#Cette ligne];[SEMAINE]] 'Suivi HS'!$G$1:$G1 'Suivi HS'!$D$1:$D1 tb_Relevé[[#Cette ligne];[NOM]] | Concatène les N° de semaine S M
jusqu'à "cette ligne"
(En ligne 2) |
J'ai ajouté 3 colonnes (V N, V M ou AM, S M) dans le tableau des relevés pour recevoir ces formules
Dans le tableau de Récapitulation :
Noms | Définitions | Contenus |
---|
Formule_N°S_VMouAM | =SI(tb_Récap[[#Cette ligne];[V M ou AM]]>0;INDEX(tb_Relevé[V M ou AM];GRANDE.VALEUR((tb_Relevé[NOM]=tb_Récap[[#Cette ligne];[Nom]])*((tb_Relevé[EQUIPE]=HS_VM)+(tb_Relevé[EQUIPE]=HS_VAM))*(LIGNE(tb_Relevé[NOM])-LIGNE(tb_Relevé[#En-têtes]));1));"") | Renvoi pour V M ou AM la dernière concaténation |
Formule_N°S_VN | =SI(tb_Récap[[#Cette ligne];[V NUIT]]>0;INDEX(tb_Relevé[V N];GRANDE.VALEUR((tb_Relevé[NOM]=tb_Récap[[#Cette ligne];[Nom]])*(tb_Relevé[EQUIPE]=HS_VN)*(LIGNE(tb_Relevé[NOM])-LIGNE(tb_Relevé[#En-têtes]));1));"") | Renvoi pour V N la dernière concaténation |
Formule_N°S_SM | =SI(tb_Récap[[#Cette ligne];[SAMEDI]]>0;INDEX(tb_Relevé[S M];GRANDE.VALEUR((tb_Relevé[NOM]=tb_Récap[[#Cette ligne];[Nom]])*(tb_Relevé[EQUIPE]=HS_SM)*(LIGNE(tb_Relevé[NOM])-LIGNE(tb_Relevé[#En-têtes]));1));"") | Renvoi pour S M la dernière concaténation |
Voilà, il n'y a pas de limite pour le nombre de semaines, et pas de macro mais si tu peux fonctionner avec des macros je te conseille en effet d'opter pour la 1ère solution de
@job75 et de la marquer comme solution pour ton fil (voir ma signature)