XL 2021 masquage de ligne selon condition

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 !

philkowa

XLDnaute Nouveau
Bonjour
Je suis prof en milieu carcéral.
Ce fichier est un registre d'appel pour des élèves amenés à entrer en formation et à en sortir à des dates différentes.
La feuille données élèves regroupe tous les élèves, leur groupe, leur date d'entrée et leur date de sortie
Dans le fichier d'origine, grâce à la fonction FILTER (version excel récente au boulot, que je n'ai pas sur mon pc maison!), les noms et prénoms sont dispatchés dans les feuilles groupe, en fonction des colonnes A, B et C de la feuille données élèves et de la cellule B3 de chaque feuille groupe. Cette nouvelle fonction fonctionne très bien...
Ma question concerne les élèves partis: Comment faire pour que, quand la colonne E de la feuille données élèves contient une date, ce qui signifie que l'élève est parti, la ligne correspondant à cet élève se masque dans le groupe concerné (ex nom2 groupe1 et nom6 groupe4; j'ai surligné les noms)
Il doit bien exister une macro?
Merci!!!
 

Pièces jointes

Bonjour philkowa et bienvenu sur XLD,
Un essai en PJ avec une macro dans Thisworkbook.
Cette macro est activé automatiquement lorsqu'on sélectionne une feuille dont le nom commence par "gr".
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim DL%, L%, Nom$, Sortie
    Application.ScreenUpdating = False
    With Sheets("données élèves")
        DL = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
        Set Plage = .Range("A2:F" & DL)                         ' Recup Plage élèves
    End With
    If LCase(Left(Sh.Name, 2)) = "gr" Then
        DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row         ' dernière ligne
        For L = 6 To DL
            Nom = Cells(L, "A")                                 ' Recup nom de l'élève
            Sortie = Application.VLookup(Nom, Plage, 5, 0)      ' Recup date de sortie
            If Sortie <> 0 Then Rows(L).EntireRow.Hidden = True ' Si date de sortie on masque la ligne
        Next L
    End If
End Sub
 

Pièces jointes

Re,
Plus simple et plus rapide
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim DL%, L%, Nom$, Sortie, Plage
    If LCase(Left(Sh.Name, 2)) <> "gr" Then Exit Sub
    Application.ScreenUpdating = False
    With Sheets("données élèves")
        DL = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row   ' Dernière lignes de la liste élèves
        Set Plage = .Range("A2:F" & DL)                     ' Recup Plage élèves
    End With
    DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row         ' Dernière ligne
    For L = 6 To DL                                         ' Pour chaque ligne non vide
        Nom = Cells(L, "A")                                 ' Recup nom de l'élève
        Sortie = Application.VLookup(Nom, Plage, 5, 0)      ' Recup date de sortie
        If Sortie <> 0 Then Rows(L).EntireRow.Hidden = True ' Si date de sortie on masque la ligne
    Next L
End Sub
 

Pièces jointes

Re,
Plus simple et plus rapide
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim DL%, L%, Nom$, Sortie, Plage
    If LCase(Left(Sh.Name, 2)) <> "gr" Then Exit Sub
    Application.ScreenUpdating = False
    With Sheets("données élèves")
        DL = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row   ' Dernière lignes de la liste élèves
        Set Plage = .Range("A2:F" & DL)                     ' Recup Plage élèves
    End With
    DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row         ' Dernière ligne
    For L = 6 To DL                                         ' Pour chaque ligne non vide
        Nom = Cells(L, "A")                                 ' Recup nom de l'élève
        Sortie = Application.VLookup(Nom, Plage, 5, 0)      ' Recup date de sortie
        If Sortie <> 0 Then Rows(L).EntireRow.Hidden = True ' Si date de sortie on masque la ligne
    Next L
End Sub



Bonjour
Ca fonctionne mais quand j'ouvre le fichier que vous m'avez gentiment renvoyé, je ne trouve pas la macro...? quand j'ouvre la fenêtre de dialogue des macros elle n'apparait pas... (j'ai bien débloqué le fichier pour que la macro fonctionne)
Il faudra que je colle le code dans le fichier du boulot? Les noms de groupes sont différente dans les feuilles du fichier du boulot( Alpha, FLE, informatique...)
Merci
 
Bonjour à tous

@philkowa je te propose ce fichier

A noter mon fichier fonctionne même si tu as 2 noms identiques (Durand par exemple) car il recherche le nom + le prénom de la personne .
Mais si tu as 2 Jean Durand les 2 se retrouveront masqués si tu ne veux pas cela il faut une clé d'identification unique et indiscutable. 😉

Merci de ton retour
 

Pièces jointes

Re,
Un essai en PJ avec une macro dans Thisworkbook
1762438519144.png
 
- 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
Retour