XL 2016 Autoriser date d'une periode dans textbox

  • Initiateur de la discussion Initiateur de la discussion KTM
  • Date de début Date de début

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 !

KTM

XLDnaute Impliqué
Bonjour FORUM
J'ai une textbox dans mon userform dans laquelle je dois saisir des dates
je voudrais eviter la saisie de dates antérieures a un mois donné
Comment parametrer ma textbox?
Merci infiniment
 
Bonjour KTM,
VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an, mois
an = Year(Date) '2019 'à adapter
mois = Month(Date) '8 'à adater
With TextBox1
    If Not IsDate(.Text) Then .Text = "": Cancel = True: Exit Sub
    If CDate(.Text) < DateSerial(an, mois, 1) Then .Text = "": Cancel = True: Exit Sub
    .Text = Format(.Text, "dd/mm/yyyy")
End With
End Sub
A+
 
Re @job75,

J'avais commis une fonction assez longue pour convertir du texte en date afin d'éviter certains effets de bord des isdate ou cdate ou autres fonctions date qui forcent des "fausses dates".
Avec ton code, si on saisit dans la textbox1 le texte 3/25/27 alors les fonctions de date le transforme en 25/03/2027 ce qui est rarement désiré.
 
Bonjour KTM,
VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an, mois
an = Year(Date) '2019 'à adapter
mois = Month(Date) '8 'à adater
With TextBox1
    If Not IsDate(.Text) Then .Text = "": Cancel = True: Exit Sub
    If CDate(.Text) < DateSerial(an, mois, 1) Then .Text = "": Cancel = True: Exit Sub
    .Text = Format(.Text, "dd/mm/yyyy")
End With
End Sub
A+
Super Job75
Merci
 
Re @job75,

Bah l'utilisateur n'est pas forcément un demeuré et il a des yeux pour voir et des doigts pour agir.
J’acquiesce mais:
Ce que je voulais dire, c'est que je n'ai pas trouvé (à l'époque) d'astuce simple pour pallier cet état de fait. Si toi ou d'autres en ont, je suis preneur.
En attendant, j'ai ressorti un vieux code qui ne me satisfait guère car c'est long et lourd au niveau codage. L'astuce étant de soumettre à la fonction cdate() une expression avec le mois en lettres et non en chiffres.
 

Pièces jointes

- 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

Discussions similaires

Réponses
3
Affichages
185
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
121
Réponses
1
Affichages
360
Réponses
6
Affichages
618
Retour