Classement en plusieurs groupes dynamiques

Lmm

XLDnaute Nouveau
Bonjour,

j'ai un petit problème avec excel et j'espère que vous pourrez m'aider à le résoudre.

Situation :
J'ai des "noms" dans la colonne A
J'ai des "notes" dans la colonne B (moyenne entre différentes notes situées dans un autre tableau)
Dans la colonne D, j'ai le "groupe 1"
Dans la colonne E, j'ai le "groupe 2"
Dans la colonne F, j'ai le "groupe 3"

But du fichier :
J'aimerais que les noms (des élèves) aillent se ranger automatiquement dans le groupe associé suivant leur note. Par exemple, ceux dont la note est supérieure à 16 vont se ranger directement (dans l'ordre décroissant des notes) dans le groupe 1. A chaque fois que je change une note, les noms changent de groupe si nécessaire.

Problème :
Je n'arrive pas à savoir comment faire pour que la taille du tableau s'adapte automatiquement au nombre d'élèves qui peuvent aller dedans.
Si je veux dans le groupe 1, les élèves avec une note > 16 et qu'il y a 3 élèves concernés, j'aimerais que le tableau du groupe 1 ne fasse que 3 lignes.
Si je veux ensuite que le groupe 1 soit pour les élèves avec une note > 14 et qu'il y a cette fois 6 élèves concernés, hop le tableau fait automatiquement 6 lignes.

Il faudrait donc que le tableau puisse s'agrandir ou se rétrécir (automatiquement) suivant un critère modifiable.

Est-ce possible ?

J'espère avoir été clair, mais n'hésitez pas à me demander quoique ce soit.

Merci d'avance pour votre aide.
 
Dernière édition:

Lmm

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Oui, bien-sûr, voilà un fichier-type de mon problème.

Merci.
 

Pièces jointes

  • fichier-type.xlsx
    19.2 KB · Affichages: 45
  • fichier-type.xlsx
    19.2 KB · Affichages: 43
  • fichier-type.xlsx
    19.2 KB · Affichages: 45
Dernière édition:

Lmm

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Ah merci, c'est vraiment génial !

Par contre, quand je change les notes, les élèves ne sont pas automatiquement remis dans le bon groupe (il faut reconfirmer le critère de sélection du groupe). C'est juste pour que ce soit plus intuitif.

En tout cas, vraiment merci de votre aide.

edit. Ah, je viens de voir, mais c'est ma faute, je n'ai pas été très clair sur ce point. J'aimerais que les élèves du groupe 1 n'apparaissent pas dans le groupe 2 (en fait, je ne mettrais jamais un critère plus selectif pour le groupe 2) et pour 2 et 3 respectivement.
En gros, si le critère du groupe 2 est 12, celui du groupe 1 ne sera jamais < 12 (par exemple 14) et donc les élèves du groupe 2 seront ceux dont les notes sont entre 12 et 14.

Vraiment désolé, je ne sais pas si c'est dur à corriger...
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Classement en plusieurs groupes dynamiques

voilà 3 exemples de critère pour N2,si K3 change(groupe2)
[N2] = "=((b2<=" & [J3] & ")*(B2>=" & [K3] & "))"
ou
[N2].FormulaLocal = "=et(b2<=" & [J3] & ";B2>=" & [K3] & ")"
ou
[N2] = "=if(b2<=" & [J3] & ",B2>=" & [K3] & ")" 'critère
à mettre au-dessus de
Range("E2") = "Nom"
 

Lmm

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Finalement, après avoir testé un peu plus, je vais devoir vous embêter encore un petit peu, désolé...

@Bebere, tout est très bien, mais quand je change les notes des élèves, ils ne se mettent pas automatiquement dans le bon groupe. On ne peut mettre que des nombres entier en critère (pas de 12,1 en utilisant la virgule mathématique)

@MK. Parfois des élèves disparaissent des groupes, parfois ils sont dans 2 groupes alors que ce n'est pas possible (un élève à 13.6 dans le groupe > 14 par exemple).

Merci de votre patience. :)
 

Lmm

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Merci beaucoup !

Je préfère une version "liste" plutôt que tableau à trou car dans ma vraie version, il y a beaucoup plus de lignes (de noms) que là, et donc ça risque de ne pas être très lisible, malheureusement.

Mais encore une fois merci. :)
 

MK.

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Oups...Cordialement

Code:
Option Base 1
Sub tri()
    Application.ScreenUpdating = False
    Dim a, b, c(), d, e
    a = Feuil1.[a1].CurrentRegion.Value
    b = Feuil1.[i3:L3].Value
    ReDim c(UBound(a), 3)

    For i = 2 To UBound(a)
        If a(i, 2) > b(1, 1) Then c(i - 1, 1) = a(i, 1)
        If a(i, 2) >= b(1, 2) And a(i, 2) <= b(1, 1) Then c(i - 1, 2) = a(i, 1)
        If a(i, 2) < b(1, 2) Then c(i - 1, 3) = a(i, 1)

    Next
    With Feuil1
        .[D1].CurrentRegion.ClearContents
        .[D1:F1] = .[I2:K2].Value
        .[D2].Resize(UBound(c), 3) = c

        For d = UBound(c) To 2 Step -1
            For e = 4 To 6
                If IsEmpty(.Cells(d, e)) Then .Cells(d, e).Delete shift:=xlUp

            Next
        Next
    End With

End Sub
 
Dernière édition:

Lmm

XLDnaute Nouveau
Re : Classement en plusieurs groupes dynamiques

Merci beaucoup !

En l'état, c'est exactement ce que je cherche. Si vraiment cela ne vous prend pas trop de temps (vraiment, j'insiste), serais-ce possible de se passer du bouton "générer" (faire en sorte que cela se fasse tout seul si je change les critères ou les notes) ? Enfin, est-ce possible d'attribuer une couleur à chaque groupe ? C'est-à-dire si le groupe 1 contient 3 noms les 3 noms sont en rouge, mais quand je change les critères, s'il y a 2 noms dans le groupe 1, seuls les 2 lignes correspondantes sont en rouge, la 3ème redevient blanche (idem pour 2 et 3).

Mais, le modèle actuel est juste parfait, c'est juste de la gourmandise de ma part donc ne perdez pas de temps si cela est trop long.

Bien à vous.
 

hbenalia

XLDnaute Occasionnel
Re : Classement en plusieurs groupes dynamiques

Bonjour à tous,

Une autre idée en formules et colonne intermédiaire (pour les doublons et pour éviter les formules matricielles)....


Cordialement
 

Pièces jointes

  • fichier-type.xlsx
    16.3 KB · Affichages: 32
  • fichier-type.xlsx
    16.3 KB · Affichages: 36
  • fichier-type.xlsx
    16.3 KB · Affichages: 36

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz