XL 2013 mettre la valeur de plusieurs cellules dans une autre

bruno972

XLDnaute Junior
Bonjour à tous,

j'ai un tableau qui regroupe l'ensemble des personnes faisants des heures supplémentaires le vendredi et le samedi matin.

je souhaite afficher dans les colonnes K, L et Q les N° des semaines comme en L2.

merci d'avance de votre aide


Cordialement

Bruno
 

Pièces jointes

  • samedi.xlsx
    16.9 KB · Affichages: 8
Solution
Bonjour bruno972, AtTheOne,

A partir d'Excel 2019 on peut utiliser la fonction JOINDRE.TEXTE.

Mais sur Excel 2013 il vous faut utiliser cette fonction VBA :
VB:
Function Joindre(matrice(), separateur$)
Dim e
For Each e In matrice
    If e <> "" Then Joindre = Joindre & separateur & e
Next
Joindre = Mid(Joindre, Len(separateur) + 1)
End Function
Le code doit être placé impérativement dans un module standard.

Voyez le fichier .xlsm joint et les formules matricielles en K2 L2 Q2.

Elles doivent être validées par Ctrl+Maj+Entrée et tirées vers le bas.

A+

job75

XLDnaute Barbatruc
Bonjour bruno972, AtTheOne,

A partir d'Excel 2019 on peut utiliser la fonction JOINDRE.TEXTE.

Mais sur Excel 2013 il vous faut utiliser cette fonction VBA :
VB:
Function Joindre(matrice(), separateur$)
Dim e
For Each e In matrice
    If e <> "" Then Joindre = Joindre & separateur & e
Next
Joindre = Mid(Joindre, Len(separateur) + 1)
End Function
Le code doit être placé impérativement dans un module standard.

Voyez le fichier .xlsm joint et les formules matricielles en K2 L2 Q2.

Elles doivent être validées par Ctrl+Maj+Entrée et tirées vers le bas.

A+
 

Pièces jointes

  • samedi(1).xlsm
    22.4 KB · Affichages: 8

job75

XLDnaute Barbatruc
Une solution sans VBA avec ce fichier (2).

Les formules sont matricielles et supposent que le nombre de semaines concaténées ne dépasse pas 3.

En K2 :
Code:
=SIERREUR(PETITE.VALEUR(SI((D$2:D$16=H2)*((E$2:E$16="matin HS")+(E$2:E$16="après midi HS"));NO.SEMAINE.ISO(C$2:C$16));1);"")&SIERREUR(" "&PETITE.VALEUR(SI((D$2:D$16=H2)*((E$2:E$16="matin HS")+(E$2:E$16="après midi HS"));NO.SEMAINE.ISO(C$2:C$16));2);"")&SIERREUR(" "&PETITE.VALEUR(SI((D$2:D$16=H2)*((E$2:E$16="matin HS")+(E$2:E$16="après midi HS"));NO.SEMAINE.ISO(C$2:C$16));3);"")
A+
 

Pièces jointes

  • samedi(2).xlsx
    17.3 KB · Affichages: 1
Dernière édition:

AtTheOne

XLDnaute Impliqué
Supporter XLD
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) o_O.
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 tableauPlage de données (hors entêtes)Contenu
tb_Noms=Tables!$A$2:$B$7Nom et index des salariés
tb_TypeHS=Tables!$D$2:$D$5Type d'heures Sup
tb_Relevé='Suivi HS'!$A$2:$I$16Relevé des heures Sup
tb_Récap='Suivi HS'!$K$2:$V$7Ré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
NomsDéfinitionContenus
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
NomsDéfinitionsContenus
HS_VM=Tables!$D$2matin HS
HS_VAM=Tables!$D$3après midi HS
HS_VN=Tables!$D$4nuit HS
HS_SM=Tables!$D$5Smatin 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
NomsDéfinitionsContenus
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 :
NomsDéfinitionsContenus
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)
 

Pièces jointes

  • Heures Sup.xlsx
    22.4 KB · Affichages: 0
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
304 856
Messages
2 022 525
Membres
222 901
dernier inscrit
Familypradez