Textbox et le format "date"
Bonjour,
Je sollicite votre aide pour une problématique que je n'arrive pas a résoudre
J'ai dans ma Userform une TextBox qui va faire office de date au format classique JJ/mm/aaaa (29/09/2016)
Pour le moment j'ai réussi a effectuer les petite fonctionnalité suivante :
1 - Mise en forme automatique des "/" directement lors de la saisie avec le code suivant
Private Sub DATE_SINISTRE_Change()
'Déclaration et mise en "forme" des variable de travail
Dim Valeur As Byte
' DATE_SINISTRE.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
Valeur = Len(DATE_SINISTRE)
If Valeur = 2 Or Valeur = 5 Then DATE_SINISTRE = DATE_SINISTRE & "/"
End Sub
2 - Faire en sorte de sisir uniquement des chiffre avec le code suivant
Private Sub DATE_SINISTRE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
DATE_SINISTRE.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
With CreateObject("VBScript.RegExp")
.Pattern = "^\d*$"
.IgnoreCase = True
If Not .Test(DATE_SINISTRE.Value & Chr(KeyAscii)) Then KeyAscii = 0: Beep
End With
Je souhaiterais au final que l'utilisateur puisse saisir que des chiffre et effectuer une mise en forme automatique de ma date avec les / (mise en forme pendant ou après la saisie de la date)
Pourriez-vous m'aider dans cette problématique ?
d'avance merci à vous
bonjour
essayer ca :
Option Explicit
Private Sub DATE_SINISTRE_Change()
If Len(DATE_SINISTRE.Value) = 2 Or Len(DATE_SINISTRE.Value) = 5 Then
'SendKeys "/", False
End If
End Sub
Private Sub DATE_SINISTRE_KeyPress(ByVal KeyCode As _
MSForms.ReturnInteger)
If Chr(KeyCode) = 0 Or Chr(KeyCode) = 1 Or Chr(KeyCode) = 2 Or Chr(KeyCode) = 3 Or Chr(KeyCode) = 4 _
Or Chr(KeyCode) = 5 Or Chr(KeyCode) = 6 Or Chr(KeyCode) = 7 Or Chr(KeyCode) = 8 Or Chr(KeyCode) = 9 _
Or Chr(KeyCode) = "/" Or Chr(KeyCode) = "-" Then
If Len(DATE_SINISTRE.Value) = 2 Or Len(DATE_SINISTRE.Value) = 5 Then
DATE_SINISTRE.Value = DATE_SINISTRE.Value & "/"
End If
Else
If Len(DATE_SINISTRE.Value) < 10 Then Beep: SendKeys "{BACKSPACE}", False
End If
End Sub
Private Sub UserForm_Initialize()
DATE_SINISTRE.MaxLength = 10 ' ou mettre dans la case de MaxLength sur propreités
End Sub
Bonjour,
Je vais répondre tardivement, je n'avais pas eu le temps de tester ta solution.
Merci AMIR !!! ça correspond a ce que je souhaitais faire !!!
Je vais essayer maintenant de mettre en place des contrôles du type :
* Ne pas saisir une date supérieur à la date du jour
* Saisir un "mois" compris entre 01 et 12
* Saisir un "jour" compris en 01 et 29/30/31 en fonction du mois saisie dans la date
Si vous avez des conseil tuyaux etc pour faire cela je suis preneur
d'avance merci