Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Textbox, date et évènement

  • Initiateur de la discussion Initiateur de la discussion Seb
  • 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 !

Seb

XLDnaute Occasionnel
Bonjours au forum,

J'ai un petit soucis de manipulation de textbox et j'arrive pas à m'en dépétrer.. ;(

Voilà mon soucis: J'ai plusieurs Textbox dans laquelle je dois entrer des dates au format XX/XX/XXXX .. Dans l'Userform, des petites routines se mettent en route pour faire une vérification de date (Du style : la date de début de contrat doit etre inférieure à la fin de contrat etc .. sinon msgbox (" ..... ") ) et des caluls se font et apparaissent dans d'autre textbox..

Mon soucis et le suivant, ce programme marche bien à condition de ne pas faire d'erreur de frappe, sinon des erreurs apparaissent. Je voudrais trouvé le moyen de faire une verif du type If not is date (Textbox) then ("Veuillez insérer une date au format XX/XX/XXXX ").... Ce que j'ai essayer de faire. le problème c'est qu'avec ce genre de vérification, la macro me laisse pas le temps de finir d'ecrire la date pour m'afficher une erreur.... Comment faire ??

Merci à tous..
Seb
 
Re : Textbox, date et évènement

Bonjoue Seb,
Ce que j'ai essayer de faire. le problème c'est qu'avec ce genre de vérification, la macro me laisse pas le temps de finir d'ecrire la date pour m'afficher une erreur.... Comment faire ??
je suppose que tu as une procédure TextBox_Change()

ci-dessous , la manière de déclencher la procédure après avoir entré le dernier chiffre de la date

mais qui impose d'entrer la date obligatoirement dans un seul format: XX/XX/XXXXX

pour le 1/5/2012, il faut entrer 01/05/2012

Code:
Private Sub TextBox1_Change()
If Len(TextBox1.Value) = 10 Then
' ......................................
' la procédure de contrôle et validation
' ......................................
End If
End Sub

à+
Philippe
 
Re : Textbox, date et évènement

Bonjours phlaurent55, laetitia90

Merci beaucoup pour vos réponse, oui j'ai bien utilisé la procédure textbox.change mais je connaissais pas Len ou maxlength =10.

Je vais m’empresser des les utiliser, je vous tient au courant

Merci beaucoup 😉
 
Re : Textbox, date et évènement

Bonsoir Seb, le forum,

Une autre façon.

Les dates doivent contenir 10 caractères. Les séparateurs peuvent être l'espace, le slash ou le tiret ou un mélange des trois (01 01 2012, 01/01/2012, 01-01-2012 ou 01-01/2012)

Le format et la validité des deux dates ( début < fin ) sont vérifiés quand on quitte un textbox ou quand le texte saisi a pour longueur 10 car.

le code:
VB:
Private Sub TextBox1_Change()
  If Not FormatDate(TextBox1) And Len(TextBox1) < 10 Then
    TextBox1.SetFocus
    TextBox1.SelStart = 100
    Exit Sub
  ElseIf Not FormatDate(TextBox1) And Len(TextBox1) = 10 Then
    TextBox1.SetFocus
    TextBox1.SelStart = 100
    MsgBox "Vous n'avez pas saisi une date valide"
    Exit Sub
  End If
  
  If FormatDate(TextBox2) Then
    If Not Verif2dates(TextBox1, TextBox2) Then
      MsgBox "le début du contrat est postérieur à la fin de contrat" _
        & vbLf & vbLf & "vérifiez les dates saisies"
    End If
  End If
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Not FormatDate(TextBox1) Then
    Cancel = True
    TextBox1.SelStart = 100
    Beep
  End If
End Sub

Private Sub Textbox2_Change()
  If Not FormatDate(TextBox2) And Len(TextBox2) < 10 Then
    TextBox2.SetFocus
    TextBox2.SelStart = 100
    Exit Sub
  ElseIf Not FormatDate(TextBox2) And Len(TextBox2) = 10 Then
    TextBox2.SetFocus
    TextBox2.SelStart = 100
    MsgBox "Vous n'avez pas saisi une date valide"
    Exit Sub
  End If
  
  If FormatDate(TextBox1) Then
    If Not Verif2dates(TextBox1, TextBox2) Then
      MsgBox "le début du contrat est égal ou postérieur à la fin de contrat" _
        & vbLf & vbLf & "vérifiez les dates saisies"
    End If
  End If
End Sub

Private Sub Textbox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Not FormatDate(TextBox2) Then
    Cancel = True
    TextBox2.SelStart = 100
    Beep
  End If
End Sub

Function FormatDate(x As Control)
  If Len(x) <> 10 Then GoTo Pas_Date
  
  On Error GoTo Pas_Date
  FormatDate = IsDate(CDate(x.Value))
  Exit Function
Pas_Date:
  FormatDate = False
End Function

Function Verif2dates(x As Control, y As Control) As Boolean
  If Not FormatDate(x) Then
    Verif2dates = False
  ElseIf Not FormatDate(y) Then
    Verif2dates = False
  Else
    Verif2dates = CDate(x) < CDate(y)
  End If
End Function
 

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…