Microsoft 365 Masquage et démasquage sous plusieurs conditions

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

Dans le tableau joint, je souhaite en fonction des conditions expliqués dans la feuil 1 masquer et démasquer plusieurs lignes différentes en fonction d'une donnée sélectionnée dans un menu déroulant

Voici en pièce jointe le tableau et les explications

Merci beaucoup
 

Pièces jointes

  • Classeur2.xlsx
    22.7 KB · Affichages: 34
Solution
Re..
Modifier cette partie du code

VB:
    '****************************************** Masquer/afficher************************
    If Target.Address = "$D$18" Then
        Application.ScreenUpdating = False
        Range("25:62,72:73").EntireRow.Hidden = False
        Select Case Target.Value
        Case "Démission"
            [41:62].EntireRow.Hidden = True
        Case "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Décès"
            [25:29, 46:62].EntireRow.Hidden = True
        Case "Licenciement Faute Grave"
            [41:46].EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée"
            [25:29,46:62,72:72].EntireRow.Hidden = True
        Case "Retraite", "Rupture Conventionnelle"...

Jacky67

XLDnaute Barbatruc
Bonjour

Dans le tableau joint, je souhaite en fonction des conditions expliqués dans la feuil 1 masquer et démasquer plusieurs lignes différentes en fonction d'une donnée sélectionnée dans un menu déroulant

Voici en pièce jointe le tableau et les explications

Merci beaucoup
Bonsoir,
Une proposition en PJ avec ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        Application.ScreenUpdating = False
        Rows("4:41").Hidden = False
        Select Case Target.Value
        Case "Démission"
            [19:41].EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée", "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Retraite", "Décès"
            [4:8, 25:41].EntireRow.Hidden = True
        Case "Licenciement Autres", "Licenciement Faute Grave"
            [20:24].EntireRow.Hidden = True
        End Select
    End If
End Sub
 

Pièces jointes

  • FCMLE44.xlsm
    29.6 KB · Affichages: 9

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

Merci

Quand je le mets sur mon fichier définitif en modifiant les cellules, j'obtiens le message en pièce jointe

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$18" Then
        Application.ScreenUpdating = False
        Rows("25:62").Hidden = False
        Select Case Target.Value
        Case "Démission"
            [41:62].EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée", "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Retraite", "Décès"
            [25:29, 46:62].EntireRow.Hidden = True
        Case "Licenciement Autres", "Licenciement Faute Grave"
            [41:46].EntireRow.Hidden = True
        End Select
    End If
End Sub

Cordialement
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    15.1 KB · Affichages: 7

Jacky67

XLDnaute Barbatruc
Re..
Non, cela n'a rien à voir avec le nom de la feuille
Est-ce que le code proposé est bien placé dans le module de la feuille à traiter ?
Si oui, il ne peut y avoir 2 instructions évènementielles(Private Sub) du même nom
"Private Sub Worksheet_Change(ByVal Target As Range)"
Sinon, mettre le classeur en ligne
 

Jacky67

XLDnaute Barbatruc
Le voici
Je ne suis qu'au début de mon projet
Re..
Mettre les deux codes dans le même "Worksheet_Change"
Pour la partie "Worksheet_Change" de la feuille "Renseignements salarié" le code ci-dessous
Et attribuer la plage "Motif de départ" (Nommée "Motif")à la validation des données de la cellule D18
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$21" Then
        If Target = "" Then Exit Sub
        If IsError(Evaluate("='" & Target.Value & "'!A1")) Then
            MsgBox "La feuille " & Target.Text & " n'existe pas !", , "Information"
        Else
            Sheets(Target.Value).Select
        End If
    End If
    '****************************************** Masquer/afficher************************
    If Target.Address = "$D$18" Then
        Application.ScreenUpdating = False
        Rows("25:62").Hidden = False
        Select Case Target.Value
        Case "Démission"
            [41:62].EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée", "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Retraite", "Décès"
            [25:29, 46:62].EntireRow.Hidden = True
        Case "Licenciement Autres", "Licenciement Faute Grave"
            [41:46].EntireRow.Hidden = True
        End Select
    End If
End Sub
 

Pièces jointes

  • FCMLE44 V2.xlsm
    148.3 KB · Affichages: 7

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

J'aimerais rajouter une petite chose

Ligne 72 Se masque automatiquement si motif en B1 = Fin de Contrat à durée Déterminée
Ligne 73 Se masque automatiquement si motif en B1 = Licenciement Autres, Rupture Conventionnelle et Retraite
 

Pièces jointes

  • FCMLE44 V2 (1).xlsm
    152.6 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 372
Membres
102 876
dernier inscrit
BouteilleMan