(RESOLUT)saisie une date seulement dans TextBox

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 !

chaelie2015

XLDnaute Accro
Bonjour Forum
ci dessous un code de Job( saisie une date seulement dans TextBox ), je souhaite l'adapter a mon fichier, il est fonctionnel mais le seul souci dans le TextBox SI JE SAISIE UNE DATE INCORRECTE EXEMPLE : 12/13/2015 IL L'ACCEPTE ?????
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then an = Year(CDate(TDate))
If TDate <> "" And an < 2012 Then
  Cancel = True
  MsgBox "Entrez une date valide à partir de l'année 2012"
  TDate = ""
End If
End Sub
Salutations
 
Dernière édition:
Re : saisie une date seulement dans TextBox

Bonjour chaelie2015, le Forum,
Bonjour tototiti2008 🙂

N'ayant pas le fichier, essaies ceci:
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If TDate = Format(TDate, "dd/mm/yyyy") Then
    an = Year(CDate(TDate))
Else
    MsgBox "Le format de date n'est pas correct", vbCritical, Me.Caption
    Exit Sub
End If
If TDate <> "" And an < 2012 Then
  Cancel = True
  MsgBox "Entrez une date valide à partir de l'année 2012"
  TDate = ""
End If
End Sub

@+ 😎
 
Re : saisie une date seulement dans TextBox

Bonsoir tout le monde,

Tout dépend de ce que l'on appelle une erreur.

Si vous tapez 12/13/2015 VBA considère que c'est la date du 13/12/2015, un point c'est tout.

Exactement comme si vous tapez 08/09/2015 alors que vous devriez taper 09/08/2015.

Maintenant si vous voulez imposer un format déterminé :

Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then If Format(TDate, "dd/mm/yyyy") = TDate Then an = Year(TDate)
If TDate <> "" And an < 2012 Then
  Cancel = True
  MsgBox "Entrez une date au format jj/mm/aaaa à partir de l'année 2012"
  TDate = ""
End If
End Sub
Bonne fin de soirée.
 
Re : saisie une date seulement dans TextBox

Bonjour le forum,

Il faut savoir que CDate renvoie les dates au format jj/mm/aaaa :

Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then an = Year(TDate): TDate = CDate(TDate)
If TDate <> "" And an < 2012 Then
  Cancel = True
  MsgBox "Entrez une date valide à partir de l'année 2012"
  TDate = ""
End If
End Sub
12/13/2015 sera remplacé par 13/12/2015, 1/1 par 01/01/2015...

Bonne journée.

A+
 
Re : (RESOLUT)saisie une date seulement dans TextBox

Bonjour

Job75, xhudi69, tototiti : pour ma gouverne perso.

Pour ma part, afin de rejeter une date non conforme au format français même si conforme au format US, je compare Format(TDate, "dd/mm/yyyy") avec la chaîne Tdate reformatée avec les éventuels 0 manquants sur le jour et le mois.

Avez-vous une solution plus directe ?
 
Re : (RESOLUT)saisie une date seulement dans TextBox

Bonjour chaelie, Bonjour xhudi, Bonjour job, Bonjour chris, 🙂

Avez-vous une solution plus directe ?

Pour éviter de remettre des 0 on peut peut-être faire ça (pas sûr que ce soit beaucoup plus direct 🙄) :

Code:
Function TestDteFR(Dte As String) As Boolean
Dim DteSpl
    TestDteFR = False
    If IsDate(Dte) Then
        DteSpl = Split(Dte, "/")
        On Error GoTo ErrSpl
        If CDate(Dte) = DateSerial(CLng(DteSpl(2)), CLng(DteSpl(1)), CLng(DteSpl(0))) Then
            TestDteFR = True
        End If
    End If
ErrSpl:
    On Error GoTo 0
End Function
 
Dernière édition:
Re : (RESOLUT)saisie une date seulement dans TextBox

Re

Désolée de squatter le fil de chaelie2015 😱

Job75 j'ai bien vu ton post et le code posté par TotoTiti est proche de celui que j'utilise en raison des 0 non obligatoires en saisie.

C'était juste pour vérifier que je ne peux faire plus court.
 
Re : saisie une date seulement dans TextBox

Bonjour le forum,

Il faut savoir que CDate renvoie les dates au format jj/mm/aaaa :

Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then an = Year(TDate): TDate = CDate(TDate)
If TDate <> "" And an < 2012 Then
  Cancel = True
  MsgBox "Entrez une date valide à partir de l'année 2012"
  TDate = ""
End If
End Sub
12/13/2015 sera remplacé par 13/12/2015, 1/1 par 01/01/2015...

Bonne journée.

A+

Bonsoir forum
Bonsoir tout le monde

Svp job75 et si c'est possible biensure ..comment faire pour eviter (2012)..c'est a dire supprimer l'expression de condition "entrez une date valide a partir de l'annee 2012" et se sera un textbox pour saisir une date n'importe quelle date
Merci d'avance
Cordialement
MADA
 
Re : (RESOLUT)saisie une date seulement dans TextBox

Bonjour MADAGASCAR, Marc,

Vous pouviez trouver ça tout seul MADAGASCAR :

Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TDate) Then TDate = CDate(TDate)
If TDate <> "" And Not IsDate(TDate) Then
  Cancel = True
  MsgBox "Entrez une date valide..."
  TDate = ""
End If
End Sub

Bonne soirée.
 
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
174
Retour