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
 
re

Sans autre information l'on ne comprendra pas ton bug.
Tu peux supprimer "résultat1" et copier ta vraie base en "SOURCE"
et renommer "résultat2" ainsi que le classeur cela tes souhaits.
Bonne utilisation
Je ne vois pas le UseForm "ListBox1" dans VBA, c'est le problème je pense, sinon "résultat2" fonctionne.
Autre question est-il possible de classer le résultat dans l'ordre de la colonne B "N°" ?
Merci
 
re
J'ai bien vu que c'était une première mais ce n'ai pas une raison valable
car toofatboy t'as posé comme moi et d'autres, des questions qu'il a depuis enlevé
puisque tu n'en as jamais tenu compte et tu n'as répondu à aucune
comme par exemple ta version excel qui peut être importante.
Manifestement seules tes demandes te préoccupaient
et faute de salaire l'on espère un minimum d'empathie.
Certes tu as eu ce que tu cherchais mais pour nous cela n'a été que de la frustration.
Pour la prochaine j'espère que tu auras un comportement plus social.
Bonne soirée à toi
 
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 :
1757175754733.png

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
 

Pièces jointes

- 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
146
Réponses
3
Affichages
933
  • Question Question
Microsoft 365 Excel graphique
Réponses
3
Affichages
269
Retour