les dates inversées

Evelynetfrancois

XLDnaute Impliqué
Bonjour tout le monde

Malgré une recherche sur le forum, je n’arrive pas à solutionner mon problème de dates
malgré les
Format (CDate(textbox5.Value), "dd/mm/yyyy")
Je joins un fichier pour être plus clair avec un USF largement dépoussiéré
Merci d’avance pour toutes vos précieuses idées
E et F
 

Pièces jointes

  • Classeur1.zip
    12.1 KB · Affichages: 23
  • Classeur1.zip
    12.1 KB · Affichages: 23
  • Classeur1.zip
    12.1 KB · Affichages: 25

Pierrot93

XLDnaute Barbatruc
Re : les dates inversées

Bonsoir EvelyneEtFrancois, Jean-Claude:)

essaye peut être le code ci dessous, chez moi fonctionne bien sous excel 2003 :

Code:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
If IsDate(TextBox5.Value) Then
    With Sheets(1)
        .Range("A65000").End(xlUp).Cells(2, 1) = Format(CDate(TextBox5.Value), "dd/mm/yyyy")
    End With
    Unload Me
Else
    MsgBox "le format de date est incorrect.", vbOKOnly + vbCritical, "Attention....": 'Exit Sub
    TextBox5.SetFocus
    TextBox5 = ""
End If
Application.ScreenUpdating = True
End Sub

bonne soirée
@+
 

JCGL

XLDnaute Barbatruc
Re : les dates inversées

Re,
Salut mon ami Pierrot :),

Ah ben oui mais non : le souci est que malgré le IsDate VBA accepte 12/13/2008 mais le transforme en 13/12/2008

Est-ce du au "format" texte du TextBox ?

Mes maigres connaissances en VBA ne vont pas aider E et F mais comme ils sont des "vétérans" d'XLD, ils savent bien qu'ils auront la réponse sous peu

A+
 

Pierrot93

XLDnaute Barbatruc
Re : les dates inversées

Re

je viens de tester en mettant 12/13/2008 dans la textbox, dans ce cas la fonction "isdate" interprete bien la valeur comme une date, pas dans un format classique, mais une date, et ce qui est ensuite renvoyé dans la cellule est bien 13/12/2008.

ci dessous extrait de l'aide vba sur la fonction isdate
La fonction IsDate renvoie la valeur True si l'expression est une date ou peut être reconnue en tant que date

sauf erreur de ma part ceci est un fonctionnement normal...

bonne soirée
@+
 

Evelynetfrancois

XLDnaute Impliqué
Re : les dates inversées

oups !
ben oui j ai lu la meme chose dans l aide
mais y a t il une astuce pour contourner ce probleme (fonctionnement normal...) serais-je le seul confronté à ce probleme ? lol
aller je cherche encore et encore...........
et si je trouve !!!!!!!!!!! j ecris !!!
bonne soirée à vous et encore MERCI

E et F
 

JCGL

XLDnaute Barbatruc
Re : les dates inversées

Re,
Re prête moi ta plume,

Je suis, aussi, très intéressé par le "problème" de E et F.
Comment faire "comprendre" à VBA que 12/13/2008 n'est pas une date et qu'il doit la considérer comme False (avec le IsDate...)

Au plaisir de lire la solution arf
A+ à tous

Edition : Arf la bidouille plus forte que VBA. Interessant E et F (Bon c'est Evelyne ou François qui "cause")
 
Dernière édition:

bqtr

XLDnaute Accro
Re : les dates inversées

Bonsoir Evelynetfrancois, Pierrot, JCGL

Un exemple qui teste si la date est correcte (pas de mois > à 12 et de jour = à 00).
Il faut que la date soit au format dd/mm/yyyy.

La macro teste si le chiffre formé par le 4ème et le 5ème caractère est inférieur ou égal à 12. Si le test est négatif : message d'alerte à la validation.
A priori pour les deux premiers, y a pas de problème si ils sont supérieurs à 28, 29, 30, 31 selon le mois et l'année, l'erreur est bien détectée par la fonction ISDate. Sauf si le jour est 00, 00/01/2001 est accepté ?

Code:
Private Sub Valider_Click()
If IsDate(TextBox1.Value) And Mid(TextBox1, 2, 2) > "00" And Mid(TextBox1, 4, 2) <= 12 Then
    Cells(1, 1).Value = Format(UCase(TextBox1.Value), "dd/mm/yyyy")
    Unload Me
Else
    MsgBox "Date invalide", vbCritical, "Erreur date"
    TextBox1 = ""
    TextBox1.SetFocus
End If

A+
 

Evelynetfrancois

XLDnaute Impliqué
Re : les dates inversées

Bonjour tout le monde
bqtr je te remercie beaucoup pour cette proposition

Mais cependant je rencontre toujours le même problème d'inversions de dates
Prenons comme exemple ........11 dec 2008 soit 11/12/2008
la valeur renvoyée est 12/11/2008 soit 12 nov 2008 !!!!

Manifestement c'est plus compliqué que ça n’y paraissait

A+
E et F
 

jeanpierre

Nous a quitté
Repose en paix
Re : les dates inversées

Bonjour Evelynerfrançois, Pierrot, Jean-Claude, Pierre-Olivier,

Même problème que j'ai résolu ainsi :

Sheets("Calcul").Range("IV1") = TextBox3.Value
mavar = Range("IV1")
Sheets("Calcul").Range("D5") = Format(mavar, "DD/MM/YYYY")

J'envoie la date, qui est donc au mauvais format dans l'exemple que tu donnes, je la récupère aussitôt et je la renvoie... et cela fonctionne dans tous les cas.

A tester.

Bonne fin de journée.

Jean-Pierre
 

Evelynetfrancois

XLDnaute Impliqué
Re : les dates inversées

RE
Je pense avoir trouvé une solution
Cells(1, 1).Value = Format(UCase(TextBox1.Value), "dd/mm/yyyy")
Cells(1, 1).Value = Format(UCase(TextBox1.Value), "mm/dd/yyyy")
j'inverse au depart !!!
tout semble rentrer dans l'ordre , bizard non
merci pour tout....
E et F
 

bqtr

XLDnaute Accro
Re : les dates inversées

Re,

Essaye comme ca:

Code:
If IsDate(TextBox1.Value) And Mid(TextBox1, 4, 2) <= 12 Then
    Cells(1, 1).Value = [COLOR=blue]CDate[/COLOR](Format(UCase(TextBox1.Value), "dd/mm/yyyy"))
    Unload Me

A+
 

Discussions similaires

Haut Bas