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

(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

@+
 

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 ) :

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

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


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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…