TextBox au format date
Résolu/Fermé
Jono92600
Jono92600
- Messages postés
- 76
- Date d'inscription
- jeudi 26 janvier 2017
- Statut
- Membre
- Dernière intervention
- 24 mai 2017
Jono92600
- Messages postés
- 76
- Date d'inscription
- jeudi 26 janvier 2017
- Statut
- Membre
- Dernière intervention
- 24 mai 2017
A voir également:
- Vba textbox format date
- Format date textbox vba - Meilleures réponses
- Vba textbox date format dd/mm/yyyy - Meilleures réponses
- [VBA] format de date dans textbox - Forum - VB / VBA
- Excel vba textBox format Date ✓ - Forum - Excel
- Excel vba textbox format date ✓ - Forum - VB / VBA
- Format de saisie dans textbox userform excel ✓ - Forum - Excel
- VBA Excel : Format de date ✓ - Forum - VB / VBA
4 réponses
pijaku
3 févr. 2017 à 07:51
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
3 févr. 2017 à 07:51
Bonjour,
Problème avec ton fichier.
Regarde celui-ci : https://www.cjoint.com/c/GBdgY0HWU8E
Problème avec ton fichier.
Regarde celui-ci : https://www.cjoint.com/c/GBdgY0HWU8E
f894009
2 févr. 2017 à 09:31
- Messages postés
- 16483
- Date d'inscription
- dimanche 25 novembre 2007
- Statut
- Membre
- Dernière intervention
- 14 mai 2022
2 févr. 2017 à 09:31
Bonjour,
exemple de "formatage" saisie date textbox
'control entree avec format date
par la même occasion mettre au format JJ/MM/AAAA
Vous pouvez developper un peu plus?
exemple de "formatage" saisie date textbox
'control entree avec format date
Private Sub Textbox51_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) TextBox51.MaxLength = 10 Select Case KeyAscii Case 46, 48 To 57 ' 01/04/2016 VT = Len(TextBox51) If VT = 2 Or VT = 5 Then TextBox51 = TextBox51 & "/" Case Else KeyAscii = 0 MsgBox "Only numbers allowed" End Select End Sub
par la même occasion mettre au format JJ/MM/AAAA
Vous pouvez developper un peu plus?
Jono92600
Modifié par Jono92600 le 2/02/2017 à 11:31
- Messages postés
- 76
- Date d'inscription
- jeudi 26 janvier 2017
- Statut
- Membre
- Dernière intervention
- 24 mai 2017
Modifié par Jono92600 le 2/02/2017 à 11:31
Bonjour,
Je vous remercie de votre réponse, mais le code il faut l'insérer ou exactement ? Dans le TextBox ou dans un nouveau module ?
Merci par avance.
Pour répondre à ta question sur le format de cellule JJ/MM/AAA, je veux que dans mon tableau Excel sur les colonnes, le format des dates renseignées reste dans ce format.
Je vous remercie de votre réponse, mais le code il faut l'insérer ou exactement ? Dans le TextBox ou dans un nouveau module ?
Merci par avance.
Pour répondre à ta question sur le format de cellule JJ/MM/AAA, je veux que dans mon tableau Excel sur les colonnes, le format des dates renseignées reste dans ce format.
HugoHerbomez
Modifié par HugoHerbomez le 2/02/2017 à 09:42
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
Modifié par HugoHerbomez le 2/02/2017 à 09:42
Bonjour tout le monde,
Je vais essayer de continuer la réponse de f89
Pour un textBox je ne pense pas que ce soit possible de vérifier cette ordre, il faut que tu mettes une conditions sur le bouton de validation 'OnClick'.
Par exemple si ta valeur va dans la variable dateTextBox tu peux faire :
Voilà, dit moi si tu veux des explications, bon courage !
Bien cordialement,
Hugo
Je vais essayer de continuer la réponse de f89
Pour un textBox je ne pense pas que ce soit possible de vérifier cette ordre, il faut que tu mettes une conditions sur le bouton de validation 'OnClick'.
Par exemple si ta valeur va dans la variable dateTextBox tu peux faire :
Dim jourS As String, moisS As String, anneeS As String, dateTextBox As String If Len(dateTextBox) = 10 Then ' Donc jj/mm/aaaa jourS = Mid(dateTextBox, 1, 2) 'Permet de séparer ta chaine de caractère moisS = Mid(dateTextBox, 4, 2) anneeS = Mid(dateTextBox, 7, 4) End If 'Et après il faut poser tes conditions pour vérifier que la date est bien la bonne par rapport au mois et à l'année en cours :D 'Il doit cependant exister une méthode plus rapide et plus intelligente mais elle fonctionne !
Voilà, dit moi si tu veux des explications, bon courage !
Bien cordialement,
Hugo
pijaku
2 févr. 2017 à 09:44
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
2 févr. 2017 à 09:44
Bonjour,
D'après ce lien donné dans ton autre discussion, regarde ce code :
Dans un module standard :
Dans le module de ton Userform, pour chaque TextBox concerné :
D'après ce lien donné dans ton autre discussion, regarde ce code :
Dans un module standard :
'Constante séparateur de date Public Const SEP_DATE As String = "/" Public Sub Format_Date(cTBx As MSForms.TextBox, KC As MSForms.ReturnInteger) Dim ici As Byte, flt As String, cr As String, drf As String, dtt As String flt = "##" & SEP_DATE & "##" & SEP_DATE & "####" drf = "31" & SEP_DATE & "12" & SEP_DATE & "2000" With cTBx ici = .SelStart If KC = 46 And .SelText = Mid(.Text, ici + 1) Then .Text = Left(.Text, ici) If Len(.Text) = 2 Or Len(.Text) = 5 Then .Text = Left(.Text, Len(.Text) - 1) KC = 0: Exit Sub End If If ici < Len(.Text) Then .SelStart = Len(.Text): KC = 0: Exit Sub If KC = 8 Then If ici = 3 Or ici = 6 Then .Text = Left(.Text, Len(.Text) - 1) Exit Sub End If If KC = 37 And ici = 0 Then If IsDate(.Tag) Then .Text = .Tag: KC = 0: Exit Sub End If If KC > 95 Then cr = Chr(KC - 48) If ici = 3 Then Mid(drf, 1, 5) = IIf(cr = "0", "00" & SEP_DATE & "01", "00" & SEP_DATE & "02") dtt = .Text & cr & Mid(drf, ici + 2) If KC = 32 Then If ici = 0 Or ici = 3 Or ici = 6 Or ici = 8 Then Dim voir As String voir = .Text & Mid(Format(Date, "dd" & SEP_DATE & "mm" & SEP_DATE & "yyyy"), ici + 1) If IsDate(voir) Then .Text = voir End If KC = 0: Exit Sub End If If ici <> 8 Then If Not IsDate(dtt) Or Not dtt Like flt Then KC = 0: Exit Sub Else If Not IsNumeric(cr) Then KC = 0: Exit Sub End If Select Case ici Case 1, 4 If ici = 4 And Val(Mid(.Text, ici, 1) & cr) > 12 Then KC = 0: Exit Sub If ici = 4 Then .Text = Left(dtt, Len(.Text & cr)) & SEP_DATE: KC = 0 Else .Text = Left(dtt, Len(.Text & cr)) & SEP_DATE: KC = 0 End If Case 3 If cr > "1" Then KC = 0 End Select End With Application.CutCopyMode = True End Sub
Dans le module de ton Userform, pour chaque TextBox concerné :
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Format_Date TextBox1, KeyCode End Sub
HugoHerbomez
2 févr. 2017 à 09:49
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
2 févr. 2017 à 09:49
outch ça fait mal aux yeux ^^
pijaku
Modifié par pijaku le 2/02/2017 à 09:54
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
Modifié par pijaku le 2/02/2017 à 09:54
Peut être, surement même, mais c'est efficace.
1- Essaie de saisir cette date : 29/02/2017
2- Essaie de saisir 01/13/2017
3- si le textbox est vide, appuie sur la barre d'espace...
4- conserve en "mémoire" la dernière date saisie tant que tu ne fermes pas l'userform.
Plutôt bien non?
1- Essaie de saisir cette date : 29/02/2017
2- Essaie de saisir 01/13/2017
3- si le textbox est vide, appuie sur la barre d'espace...
4- conserve en "mémoire" la dernière date saisie tant que tu ne fermes pas l'userform.
Plutôt bien non?
HugoHerbomez
Modifié par HugoHerbomez le 2/02/2017 à 10:00
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
Modifié par HugoHerbomez le 2/02/2017 à 10:00
Oui c'est sûr que c'est très efficace, perso j'ai directement divisé la valeur entrée en jour, mois et année et ensuite j'ai regardé la conformité selon l'année et le mois en cours. Et si ça ne fonctionne pas ça ne saisie pas la donnée et en attend une bonne.
Sinon quand ce n'est pas dans un textBox la question ne se pose même pas, il faut juste faire une validation de donnée sur les cellules ayant des dates et obliger la saisie d'une date entre le 01/01/2000 par exemple et AUJOURDHUI()
Sinon quand ce n'est pas dans un textBox la question ne se pose même pas, il faut juste faire une validation de donnée sur les cellules ayant des dates et obliger la saisie d'une date entre le 01/01/2000 par exemple et AUJOURDHUI()
pijaku
2 févr. 2017 à 10:00
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
2 févr. 2017 à 10:00
Pour faire une vérification en fin de saisie (par un bouton), tu n'as besoin que de IsDate(). Pas besoin de passer par une décomposition de chaine.
HugoHerbomez
Modifié par HugoHerbomez le 2/02/2017 à 10:02
- Messages postés
- 57
- Date d'inscription
- dimanche 15 juillet 2012
- Statut
- Membre
- Dernière intervention
- 2 mars 2017
Modifié par HugoHerbomez le 2/02/2017 à 10:02
Tu peux ajouter la contrainte de format avec la fonction IsDate?
3 févr. 2017 à 09:44
Merci de votre réponse, j'ai résolut le soucis cette nuit grâce a votre réponse d'hier.
Merci énormément. Plus que deux soucis encore et mon fichier serait opérationnel.