Valeur Date dans TextBox !

JBARBE

XLDnaute Barbatruc
Bonjour à tous,

J'ai fait un test avec ce fichier et en référence à la demande suivante !

https://www.excel-downloads.com/threads/transformation-date.230508/

J'ai inscrit dans la textbox la date du 03/12/14, il y a dans la cellule 12/03/14!!!

Idem si j'inscris 12/03/14, il y a dans la cellule 03/12/2014 !!

La solution : il y a dans la macro >>Format(TxtDate, "dd/mm/yyyy")

il suffit de mettre >>> Format(TxtDate, "mm/dd/yyyy")

Mais ce n'est pas logique compte tenu que l'on met les mois avant les jours !

Pouvez-vous m'expliquer pourquoi en sachant que nos amis Américains ne travail pas comme nous !

Merci pour vos réponses et bonne journée !
 

Pièces jointes

  • Test_Dates.xls
    62 KB · Affichages: 23
  • Test_Dates.xls
    62 KB · Affichages: 29
  • Test_Dates.xls
    62 KB · Affichages: 29

job75

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Bonjour JBARBE,

Ce que vous évoquez est très classique.

Pour obtenir dans la cellule la date correcte il suffit d'utiliser CDate pour convertir le texte en date :

Code:
If IsDate(TxtDate) Then [A1] = CDate(TxtDate)
A+
 

JBARBE

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Bonjour JBARBE,

Ce que vous évoquez est très classique.

Pour obtenir dans la cellule la date correcte il suffit d'utiliser CDate pour convertir le texte en date :

Code:
If IsDate(TxtDate) Then [A1] = CDate(TxtDate)
A+

Merci job75 pour cette réponse rapide !

Mais je voudrais savoir et compte tenu que j'ai un trés gros fichier avec macros, si le format que j'ai fait " Format(TxtDate, "mm/dd/yyyy")" ne provoquera pas d'erreur par la suite !

Merci à l'avance !
 

job75

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Re,

Un code complet qui va bien :

Code:
Private Sub CmbOK_Click()
If IsDate(TxtDate) Then [A1] = CDate(TxtDate)
If [A1] = "" Then TxtDate.SetFocus: TxtDate.SelStart = 0: _
  TxtDate.SelLength = Len(TxtDate): Exit Sub
Unload Me
End Sub
A+
 

Docmarti

XLDnaute Occasionnel
Re : Valeur Date dans TextBox !

Bonjour à tous

Il n'y a jamais d'inversion avec
Code:
[A1].FormulaLocal =  CDate(UneDate)
même si la cellule est au format Texte.

Cordialement

Docmarti
 

Pièces jointes

  • Test_Date_FormulaLocal_2_.xlsm
    19.1 KB · Affichages: 15
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Merci job75, j'ai complété ta macro certes plus longue à mettre mais évitant les erreurs de frappes :

Code:
Private Sub CmbOK_Click()
If IsDate(TxtDate) Then
[A1] = CDate(TxtDate)
Else
MsgBox " Veuillez inscrire une date au format dd/mm/yyyy SVP !", vbInformation + vbOKOnly, "ATTENTION"
[A1] = ""
TxtDate = ""
TxtDate.SetFocus
Exit Sub
End If
If [A1] = "" Then TxtDate.SetFocus: TxtDate.SelStart = 0: _
  TxtDate.SelLength = Len(TxtDate): Exit Sub
Unload Me

Merci encore Job75 et bonne soirée
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Re,

Il faut savoir qu'un texte peut être reconnu comme date en VBA mais pas dans la feuille de calcul !!

Par exemple avec le code du post #4 entrez 1/1/1000 dans la TextBox.

Il y aura un bug sur la 2ème ligne de la macro...

Pour l'éviter :

Code:
Private Sub CmbOK_Click()
On Error Resume Next
If IsDate(TxtDate) Then [A1] = CDate(TxtDate)
If [A1] = "" Then TxtDate.SetFocus: TxtDate.SelStart = 0: _
  TxtDate.SelLength = Len(TxtDate): Exit Sub
Unload Me
End Sub
Mais ce n'est pas parfait : testez en utilisant le calendrier 1904...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Valeur Date dans TextBox !

Re,

Ceci va bien avec le calendrier 1904 :

Code:
Private Sub CmbOK_Click()
On Error Resume Next
[A1] = CDate(TxtDate)
If Not IsDate([A1]) Then [A1] = "": TxtDate.SetFocus: _
  TxtDate.SelStart = 0: TxtDate.SelLength = Len(TxtDate): Exit Sub
Unload Me
End Sub
Avec le calendrier 1900 il y a un décalage d'un jour entre le 01/01/1900 et le 28/02/1900.

C'est dû au fait que 1900 est considérée comme bissextile dans la feuille de calcul, pas en VBA.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11