Microsoft 365 Msg Box sur conditions

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

Dans le code ci dessous,

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$D$21" Then
        If Target = "" Then Exit Sub
            Call ecriture
    End If
       '****************************************** Masquer/afficher************************
   If Target.Address = "$D$18" Then
        Application.ScreenUpdating = False
        Sheets("Courriers").Range("28:28,232:289").EntireRow.Hidden = False
        Range("20:69").EntireRow.Hidden = False
        Select Case Target.Value
        Case "Démission"
            [20:23,41:69].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Licenciement Faute Grave"
            [20:28,41:69].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Décès"
            [20:28,41:69].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289,28:28").EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée"
            [20:28,46:69].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Licenciement Autres"
            [41:46].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Retraite"
            [20:20,22:23,41:46].EntireRow.Hidden = True
        Sheets("Courriers").Range("28:28").EntireRow.Hidden = True
        Case "Rupture Conventionnelle"
            [25:28,41:46].EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        End Select
    End If
    '****************************************** Alerte Retraite************************
    If Target.Address(0, 0) = "D18" And UCase(Range("D18")) = "RETRAITE" Then
        mois = Month(Range("B17")) + 1
        If mois = 13 Then
         mois = 1
        an = Year(Range("B17")) + 1
    Else
        an = Year(Range("B17"))
    End If
        findemois = CDate("01/" & mois & "/" & an) - 1
    If Range("B17") <> findemois Then
    MsgBox ("Attention, un départ en retraite ne doit jamais avoir lieu au début ni même en cours de mois. Uniquement le dernier jour du mois. Merci, par conséquent de modifier la date de sortie en cellule B17. EN CAS D'INFORMATION CONTRAIRE, MERCI DE PRENDRE CONTACT AVEC VOTRE RESPONSABLE DE GROUPE")
      Range("B17") = ""
    End If
    '****************************************** Alerte Licenciement Autres************************
    If Target.Address(0, 0) = "D18" And UCase(Range("D18")) = "Licenciement Autres" Then
     MsgBox ("Veuillez saisir la date de notification en cellule B18")
      Range("B18") = ""
   End If
End If
End Sub

je viens de rajouter une condition pour obtenir un message si cellule D18 de la feuille salarié = "Licenciement Autres"

Code:
    '****************************************** Alerte Licenciement Autres************************
    If Target.Address(0, 0) = "D18" And UCase(Range("D18")) = "Licenciement Autres" Then
     MsgBox ("Veuillez saisir la date de notification en cellule B18")
      Range("B18") = ""
   End If

Cela ne fonctionne pas
Aurais je oublier un truc ?

Merci
 
Solution
ajoutez simplement cette ligne au code

ActiveSheet.Range("B18").Activate


VB:
        Case "Licenciement Autres"
'            [41:46].EntireRow.Hidden = True
            ActiveSheet.Range("41:46").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
            '
            MsgBox ("Veuillez saisir la date de notification en cellule B18")
            ActiveSheet.Range("B18") = ""
            ActiveSheet.Range("B18").Activate
            '

:)

Rhysand

XLDnaute Junior
Bonjour à tous


essayez de changer cette partie de votre code en quelque chose de similaire à celui-ci

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

'le reste de votre code ici
If Target.Column = 4 Then
        If Target.Row = "18" Then
            Select Case Target.Value
                Case "RETRAITE"
                    'le reste de votre code ici
                    MsgBox ("Attention, un départ en retraite ne doit jamais avoir lieu au début ni même en cours de mois. Uniquement le dernier jour du mois. Merci, par conséquent de modifier la date de sortie en cellule B17. EN CAS D'INFORMATION CONTRAIRE, MERCI DE PRENDRE CONTACT AVEC VOTRE RESPONSABLE DE GROUPE")
                    'le reste de votre code ici
                Case "Licenciement Autres"
                    'le reste de votre code ici
                    MsgBox ("Veuillez saisir la date de notification en cellule B18")
                    'le reste de votre code ici
                
                Case Else
                    'Cancel = True
            End Select
        Else
        'Cancel = True
        End If
End If
'le reste de votre code ici

End Sub



J'espère aider
 

Rhysand

XLDnaute Junior
Voyez si c'est ce que vous cherchez à faire, je viens de mettre le code que vous aviez dans le cas de sélection, ou voulez-vous que les parties de votre code soient écrites séparément?

J 'ai fait un test mettant une date sur $B$17 et cela a fonctionné avec vos conditions



VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mois As Variant, findemois As Variant

    If Target.Address = "$D$20" Then
        If Target = "" Then Exit Sub
            Call ecriture
    End If
       '****************************************** Masquer/afficher************************
    If Target.Address = "$D$18" Then
        Application.ScreenUpdating = False
        Sheets("Courriers").Range("28:28,232:289").EntireRow.Hidden = False
        Range("20:69").EntireRow.Hidden = False
        Select Case Target.Value
        Case "Démission"
'            [20:23,41:69].EntireRow.Hidden = True
            ActiveSheet.Range("20:23").EntireRow.Hidden = True
            ActiveSheet.Range("41:69").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Fin de contrat Apprentissage", "Fin de contrat Professionnalisation", "Licenciement Faute Grave"
'            [20:28,41:69].EntireRow.Hidden = True
            ActiveSheet.Range("20:48").EntireRow.Hidden = True
            ActiveSheet.Range("41:69").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Décès"
'            [20:28,41:69].EntireRow.Hidden = True
            ActiveSheet.Range("20:28").EntireRow.Hidden = True
            ActiveSheet.Range("41:69").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289,28:28").EntireRow.Hidden = True
        Case "Fin de Contrat à Durée Déterminée"
'            [20:28,46:69].EntireRow.Hidden = True
            ActiveSheet.Range("20:28").EntireRow.Hidden = True
            ActiveSheet.Range("46:69").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        Case "Licenciement Autres"
'            [41:46].EntireRow.Hidden = True
            ActiveSheet.Range("41:46").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
            '
            MsgBox ("Veuillez saisir la date de notification en cellule B18")
            Range("B18") = ""
            '
        Case "Retraite"
'            [21:23,41:46].EntireRow.Hidden = True
            ActiveSheet.Range("21:23").EntireRow.Hidden = True
            ActiveSheet.Range("41:46").EntireRow.Hidden = True
            Sheets("Courriers").Range("28:28").EntireRow.Hidden = True
            '
            mois = Month(Range("B17")) + 1
            If mois = 13 Then
                mois = 1
                an = Year(Range("B17")) + 1
            Else
                an = Year(Range("B17"))
            End If
            findemois = CDate("01/" & mois & "/" & an) - 1
            If Range("B17") <> findemois Then
                MsgBox ("Attention, un départ en retraite ne doit jamais avoir lieu au début ni même en cours de mois. Uniquement le dernier jour du mois. Merci, par conséquent de modifier la date de sortie en cellule B17. EN CAS D'INFORMATION CONTRAIRE, MERCI DE PRENDRE CONTACT AVEC VOTRE RESPONSABLE DE GROUPE")
              Range("B17") = ""
            End If
            '
        Case "Rupture Conventionnelle"
'            [21:28,41:46].EntireRow.Hidden = True
            ActiveSheet.Range("21:28").EntireRow.Hidden = True
            ActiveSheet.Range("41:46").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
        End Select
'    End If
'    '****************************************** Alerte Retraite************************
'    ElseIf Target.Address(0, 0) = "$D$18" And VBA.UCase(ActiveSheet.Range("D18")).Value = "RETRAITE" Then
'        mois = Month(Range("B17")) + 1
'        If mois = 13 Then
'            mois = 1
'            an = Year(Range("B17")) + 1
'        Else
'            an = Year(Range("B17"))
'        End If
'        findemois = CDate("01/" & mois & "/" & an) - 1
'        If Range("B17") <> findemois Then
'            MsgBox ("Attention, un départ en retraite ne doit jamais avoir lieu au début ni même en cours de mois. Uniquement le dernier jour du mois. Merci, par conséquent de modifier la date de sortie en cellule B17. EN CAS D'INFORMATION CONTRAIRE, MERCI DE PRENDRE CONTACT AVEC VOTRE RESPONSABLE DE GROUPE")
'          Range("B17") = ""
'        End If
'    '****************************************** Alerte Licenciement Autres************************
'   ElseIf Target.Address(0, 0) = "$D$18" And VBA.UCase(ActiveSheet.Range("D18")).Value = "Licenciement Autres" Then
'     MsgBox ("Veuillez saisir la date de notification en cellule B18")
'      Range("B18") = ""
'   End If
    End If
 

Rhysand

XLDnaute Junior
ajoutez simplement cette ligne au code

ActiveSheet.Range("B18").Activate


VB:
        Case "Licenciement Autres"
'            [41:46].EntireRow.Hidden = True
            ActiveSheet.Range("41:46").EntireRow.Hidden = True
            Sheets("Courriers").Range("232:289").EntireRow.Hidden = True
            '
            MsgBox ("Veuillez saisir la date de notification en cellule B18")
            ActiveSheet.Range("B18") = ""
            ActiveSheet.Range("B18").Activate
            '

:)
 

Discussions similaires

Réponses
5
Affichages
696

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes