Trier la liste vers une nouvelle feuille par classe

Bonjour,

J'ai une liste d'élèves, je voudrais qu'à partir de la "liste", les élèves de CM2 apparaissent automatiquement dans la feuille "CM2" comme une nouvelle liste (avec ses critères) et que si j'ajoute un nouvel élève de CE2 dans la "liste", cet élève est ajouté automatiquement dans la feuille de "CE2" (ainsi que vice-versa, si j'enlève un élève de CE1 de la liste, l'élève est supprimer automatiquement de la feuille "CE1".

Je vous joins le fichier, je vous remercie pour votre aide.

Bonjour,

regarde le fichier joint...

Dès que tu quittes l'onglet "Liste élèves", toutes les classes sont mises à jour

le code :

Sub classes()
With Sheets("Liste élèves")
    derlig = .[G65000].End(xlUp).Row
    .Range("G2:U" & derlig).Name = "base"
End With
classe = Array("TPS", "PS", "MS", "GS", "CP", "CE1", "CE2", "CM1", "CM2")
For Each cl In classe
    With Sheets(cl)
        .Range("H3") = cl
        .Range("G3").FormulaR1C1 = _
            "=RIGHT('Liste élèves'!RC[14],LEN('Liste élèves'!RC[14])-2)=R3C8"
        Sheets("Liste élèves").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
            "G2:G3"), CopyToRange:=.Range("A2:E2"), Unique:=False
        .Range("G3:H3").ClearContents
    End With
Next cl
End Sub

et dans l'évènement de la feuille :

Private Sub Worksheet_Deactivate()
Call classes
End Sub

le fichier :

https://www.excel-pratique.com/~files/doc2/Effectifs_v1.zip

Merci beaucoup !

Il manque un "truc" quand on fait un nouvel ajout d'un élève dans la liste, l'élève est automatiquement "saisi" dans la liste de sa classe mais "en dernier" et donc il n'y a pas de tri automatique de l'ordre alphabétique.

Re-,

effectivement, ce serait mieux, mais le "truc" ne faisait pas partie de la question, il me semble.......

remplace le code du module 1 par celui-ci, ainsi, si tu supprimes, ou ajoutes des lignes, le tri est fait dès le début, et ton onglet "Liste élèves" est trié...

Sub classes()
With Sheets("Liste élèves")
    derlig = .[G65000].End(xlUp).Row
    .Range("G2:U" & derlig).Name = "base"
    .Range("A2:AB" & derlig).Sort Key1:=.Range("G3"), Order1:=xlAscending, _
            Key2:=.Range("H3"), Order2:=xlAscending, Header:=xlGuess
End With
classe = Array("TPS", "PS", "MS", "GS", "CP", "CE1", "CE2", "CM1", "CM2")
For Each cl In classe
    With Sheets(cl)
        .Range("H3") = cl
        .Range("G3").FormulaR1C1 = _
            "=RIGHT('Liste élèves'!RC[14],LEN('Liste élèves'!RC[14])-2)=R3C8"
        Sheets("Liste élèves").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
            "G2:G3"), CopyToRange:=.Range("A2:E2"), Unique:=False
        .Range("G3:H3").ClearContents
    End With
Next cl
End Sub

Bonne soirée

Rechercher des sujets similaires à "trier liste nouvelle feuille classe"