Microsoft 365 Création d'un tableau des inscrits par équipe

  • Initiateur de la discussion Initiateur de la discussion JFG
  • Date de début Date de début

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 !

JFG

XLDnaute Nouveau
Bonjour à tous,
J'aimerai créer ce genre de tableau selon une liste, je coince !
exemple Liste_des_Partants.jpg
 
Bonjour à toutes & à tous, bonjour @gbinforme
@JFG choisira, s'il suit encore cette conversation.

Moi ce que je proposais, c'était plutôt pour l'exercice : "est-il possible de faire ça par formule" avec excel 2024 ou 365 ?"
Et tant qu'à faire en respectant le plus possible l'image donnée en exemple.
Il faut un peu se creuser la cervelle, mais on y arrive.

À bientôt
 
Bonjour à toutes & à tous, bonjour @JFG
Le sujet me semble clos, mais j'ai une proposition que je soumets ici :

Voilà l'aspect du tableau que j'obtiens :
Regarde la pièce jointe 1222086
La hauteur des rangées est calibrée sur l'équipe présentant le plus de partants (ici l'équipe 6 a 12 partants)

Les données sont placées dans le tableau structuré "TS_Listing"
Deux formules donnent le nombre d'équipes et le nombre maximal de partant par équipes (les cellules contenant ces formules sont baptisées respectivement "NbEqu" et "NbParEqu")

Le tableau est généré grâce à 2 formules matricielles dynamiques. Il s'adapte automatiquement lorsque le contenu du TS "TS_Listing" évolue.
  • La première est placé dans un nom défini "Equipe". C'est une fonction LAMBDA qui génére la liste d'une équipe dont l'index est passé en paramètre : Equipe(1) renvoie le tableau élémentaire présentant l'équipe N° 1.
    Sa formule est :
    VB:
    =LAMBDA(i;LET(ColEq;TS_Listing[EQUIPE];
                  Eq;INDEX(UNIQUE(ColEq);i);
                  Partants;FILTRE(CHOISIRCOLS(TS_Listing;2;3;4);ColEq=Eq);
                  Nb;LIGNES(Partants);
              ASSEMB.H(ASSEMB.V(ASSEMB.H("";Eq;"");Partants;FRACTIONNER.TEXTE(REPT(",,;";NbParEqu-Nb)&",,";",";";"));FRACTIONNER.TEXTE(REPT(";";NbParEqu+1);;";"))))

  • La deuxième c'est celle que l'on trouve sur la feuille "Tableau", elle génère la totalité du tableau. Elle est composée de deux fonctions LAMBDA récursives, l'une qui génère un groupe de lignes du tableau, l'autre itère sur chaque groupe de ligne. Sa formule est :
    VB:
    =LET([B][COLOR=rgb(41, 105, 176)][SIZE=5]Pas;4[/SIZE][/COLOR][/B];
         lbd;LAMBDA(me;i;j;tb;SI((i=j+Pas)+(i>NbEqu);tb;me(me;i+1;j;SI(i=j;Equipe(i);ASSEMB.H(tb;Equipe(i))))));
         Lbdl;LAMBDA(me;i;tb;SI(i>NbEqu;tb;me(me;i+Pas;SI(i=1;lbd(lbd;1;1;"");ASSEMB.V(tb;lbd(lbd;i;i;""))))));
    SIERREUR(Lbdl(Lbdl;1;"");""))
    Le nombre d'équipes par groupe de lignes est défini par le paramètre PAS de la fonction LET (ici il est de 4)
Donc une seule formule sur la feuille tableau génère la totalité du tableau !
Le reste est réalisé par 7 formats conditionnels, une macro les remets à jour à l'activation de la feuille "Tableau" :
VB:
Private Sub Worksheet_Activate()
   
     Application.ScreenUpdating = False
     MàJ_MFC_Feuille_Tableau
     Application.ScreenUpdating = True
   
End Sub
VB:
Sub MàJ_MFC_Feuille_Tableau()
   
     Const Gris = 11184814, Orange = 49407, Bleu = 12611584

'Nouvelle plage d'application des formats conditionnels
     Dim Rg As Range
     With Sh_Tableau.[L_1#]
          Set Rg = .Offset(-1, -1).Resize(.Rows.Count + 1, .Columns.Count + 1)
     End With

'Suppression des anciens formats conditionnels
     Sh_Tableau.Cells.FormatConditions.Delete
   
'Recréer les formats conditionnels
     'Cellules grises horizontales
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=MOD(LIGNE()-LIGNE(L_1);13)=12")
          .Interior.Color = Gris
          .StopIfTrue = False
     End With
     'Cellules grises verticales
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(MOD(COLONNE()-COLONNE(L_1);4)=3)*((COLONNE()<COLONNE(L_1))+(COLONNE()=(COLONNE(L_1)+COLONNES(L_1#)-1)))")
          .Interior.Color = Gris
          .StopIfTrue = False
     End With
     'Fond orange, texte bleu, gras pour le nom des équipes
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(MOD(LIGNE()-LIGNE(L_1);13)=0)*(MOD(COLONNE()-COLONNE(L_1);4)<>3)*(DECALER(B3;0;1-MOD(COLONNE()-COLONNE(L_1);4);1;1)<>"""")")
          .Interior.Color = Orange
          .Font.Color = Bleu
          .Font.Bold = True
          .StopIfTrue = False
     End With
     'Trait horizontal supérieur
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(MOD(LIGNE()-LIGNE(L_1);13)=1)*(MOD(COLONNE()-COLONNE(L_1);4)<>3)*(B3<>"""")")
          .Borders(xlTop).LineStyle = xlContinuous
          .StopIfTrue = False
     End With
     'Trait vertical Gauche
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(MOD(COLONNE()-COLONNE(L_1);4)=0)*(B3<>"""")")
          .Borders(xlLeft).LineStyle = xlContinuous
          .StopIfTrue = False
     End With
     'Trait vertical droit
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(MOD(COLONNE()-COLONNE(L_1);4)=2)*(B3<>"""")")
          .Borders(xlRight).LineStyle = xlContinuous
          .StopIfTrue = False
     End With
     'Trait horizontal inférieur
     With Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=(B3<>"""")*(B4="""")")
          .Borders(xlBottom).LineStyle = xlContinuous
          .StopIfTrue = False
     End With
   
End Sub

Voilà, juste une tentative pour voir si c'était possible 🤔: eh bien oui, c'est possible 🤗!



Voir le fichier en pièce jointe
Bonjour,
Merci pour cette solution, en effet j'ai réalisé mon tableau avec l'aide précieuse de ce site, je suis ici débutant et je n'ai a priori pas répondu à certaines questions, je suis désolé mais encore merci a tous
 
- 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

Réponses
1
Affichages
137
Réponses
3
Affichages
928
  • Question Question
Microsoft 365 Excel graphique
Réponses
3
Affichages
220
Réponses
17
Affichages
486
Réponses
10
Affichages
306
Retour