(RESOLUT)saisie une date seulement dans TextBox

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:

xhudi69

XLDnaute Accro
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

@+ :cool:
 

job75

XLDnaute Barbatruc
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.
 

job75

XLDnaute Barbatruc
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+
 

chris

XLDnaute Barbatruc
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 ?
 

tototiti2008

XLDnaute Barbatruc
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 :rolleyes:) :

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:

chris

XLDnaute Barbatruc
Re : (RESOLUT)saisie une date seulement dans TextBox

Re

Désolée de squatter le fil de chaelie2015 :eek:

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.
 

MADAGASCAR

XLDnaute Occasionnel
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
 

job75

XLDnaute Barbatruc
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 344
Membres
102 865
dernier inscrit
FreyaSalander