N'autoriser qu'une date qui est un lundi dans un User Form

Bonjour,

Comme l'indique le titre, je souhaite pour un textbox appelé "D_Contrat", n'autoriser de rentrer que des dates qui correspond à un lundi.

J'ai écrit le code suivant, qui ne fonctionnement bien à part pour la partie 'Procédure vérifiant que la date tapée est un lundi' .

Quelqu'un à une idée de ce qui cloche.

Merci d'avance

Private Sub UserForm_Initialize() 'Mettre "jj/mm/aaaa" lorsqu'on ouvre l'userform sur la cellule de début et fin de contrat' D_Contrat.Text = "jj/mm/aaaa" End Sub 'Procédure n'autorisant de rentrer que des chiffres ou des"/" dans " la date de début de contrat' Private Sub D_Contrat_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If Not ((KeyAscii > 46 And KeyAscii < 58)) Then KeyAscii = 0 End If End Sub 'Procédure n'autorisant de rentrer qu'un format date courte (JJ/MM/AAAA) dans " la date de début de contrat' Private Sub D_Contrat_AfterUpdate() On Error GoTo messagerreur 'Transformer le texte en date courte' D_Contrat = Format(D_Contrat, "short date") Exit Sub 'Action en cas d'erreur' messagerreur: MsgBox ("Le format introduite n'est pas valide, le format de date est Jour/mois/année!") 'Effacer le texte tappé s'il n'est pas conforme' D_Contrat = Empty End Sub Private Sub D_Contrat_Enter() 'Effacer "jj/mm/aaaa" lorsqu'on cilque sur la cellule de début de contrat' If D_Contrat = "jj/mm/aaaa" Then D_Contrat = "" End If End Sub Private Sub D_Contrat_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Procédure vérifiant que la date tapée est un lundi' On Error GoTo messagerreur 'Vérifie si la date tapée est un lundi' If Weekday(D_Contrat, vbMonday) = 1 Then Exit Sub 'Action en cas d'erreur' messagerreur: MsgBox ("Cette date n'est pas un Lundi. Veuillez, indiquer une date qui est un Lundi") 'Effacer le texte tapé s'il n'est pas conforme' D_Contrat = Empty End If 'Remet "jj/mm/aaaa"lorsqu'on sort de la cellule de début de contrat ' If D_Contrat = "" Then D_Contrat = "jj/mm/aaaa" End If End Sub

Bonjour Sylvain12

Voici (à tester)

Private Sub D_Contrat_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  ' Vérifier si la date n'est pas un lundi
  If Weekday(D_Contrat, vbMonday) <> 1 Then
    MsgBox ("Cette date n'est pas un Lundi. Veuillez, indiquer une date qui est un Lundi")
    'Effacer le texte tapé s'il n'est pas conforme'
    D_Contrat = Empty
  End If
  'Remet "jj/mm/aaaa"lorsqu'on sort de la cellule de début de contrat '
  If D_Contrat = "" Then
    D_Contrat = "jj/mm/aaaa"
  End If
End Sub

Salut

Merci

CA marche parfait.

Je sais pas pourquoi je suis partie sur un truc compliqué alors que la problématique était toute simple.

Un oeil extérieur fait du bien des fois.

Rechercher des sujets similaires à "autoriser date qui lundi user form"