[excel] Problème format dates

Résolu
fragi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
 Momostovoi -
Bonjour,

Je travaille sur un formulaire de saisie de donnée grâce à un UserForm, jusqu'à là tout va bien mais lors de la saisie de ce qui correspond à des dates ( jj/mm/aaaa) il y a un problème d'affichage sur la feuille excel où apparaissent les informations saisies !

J'ai l'impression que parmi 4 dates saisies via des TextBox les données ne réagissent pas pareil !

Je précise! En saisissant :

TextBox1 : 01/10/2007
TB2: 05/10/2007
TB3: 10/10/2007
TB4: 21/10/2007

Apparaissent dans les cellules cibles respectivement :

10/01/2007 10/05/2007 10/10/2007 21/10/2007

et lorsque je modifie le format des cellules en format 'normal" voici ce qui apparaît :

39092 39212 39365 21/10/2007

J'avoue ne pas comprendre du tout ce qu'il se passe !!

Y a t il un moyen de paramétrer à partir du mode VBA les formats de saisie des TextBox ???

D'avance merci !!!
A voir également:

12 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Ce qu'il faut savoir c'est qu'excel a du mal avec les conversion de date en differents format et se melange facilement entre jj/mm/aaa et mm/jj/aaaa.
Essaie en analysant toi même la chaine fournie et tranforme la en 10-octobre-2007 avant de lui faire convertir avec cdate(...)

cdt
0
fragi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   4
 
Bon en fait cette réponse soulève une nouvelle question !

En effet il y a plusieurs champs devant renseigner des dates mais certains peuvent restent non complèter ! C'est là que surgit le problème, lorsqu'après avoir remplit l'InputBox en laissant un champ, au format date, vide cela provoque une erreur et lance le mode de déblocage !

Que faire ??! Je m'en remet à vous !
0
m@rina Messages postés 23885 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Bonjour,

La seule solution pour n'avoir aucune erreur (parce que l'erreur peut venir aussi de l'utilisateur qui remplit le formulaire), est d'utiliser un contrôle Calendrier. Au moins l'utilisateur choisit une date dans un calendrier, et le format sera bon.

m@rina
0
fragi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci mais mes tentatives personnelles n'ont pas donné de résultat...

Ce qui m'étonne le plus est que certaines dates se comportent "normalement" et d'autres non !

Est-il possible de paramétrer un format dans le UserForm ?

...
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
qmike Messages postés 1509 Date d'inscription   Statut Membre Dernière intervention   594
 
Bonjour
Un exemple ici
http://bvrve.club.fr/Astuces_Michel/381excelvba.html
-1
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

je confirme, les dates sont transformées en format british, ce qui conduit à inverser le jour et le mois, sauf quand le jour est supérieur à 12 où là, il ne sait pas quoi faire et laisse les données en texte au lieu de les stocker en format "numéro de série de date" (nombre de jours écoulés depuis le 01/01/1900 sur windows, sur mac c'est 1904, demandez pas pourquoi !).
-1
fragi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci à tous pour vos réponses.

Par contre impossible de convertir cela en format "normal" (numéro de série de date) ?? Quelqu'un pourrait me donner quelques indications...

Je suis allé jeté un oeil sur le lien fourni par qmike mais n'ai pas trop compris le sens des lignes de code, d'autant plus qu'elle concernent le bouton validation... Je vais néanmoins essayer de déchiffrer cela !
-1
fragi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   4
 
Hey ça y est !
Problème résolu et je viens par la même occasion de saisir la portée de la réponse de eriic !

Il "fallait" préciser dans la macro qu'il s'agissait d'une date :

Range("A1").Value = CDate(UserForm1.TextBox1.Value)

En tout cas cela a l'air de fonctionner !

En tout cas merci à tous !
-1
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Re fragi

Content pour toi, ça "à l'air" de fonctionner.
Excuse moi d'insister, mais ça risque toujours de te retourner de temps en date erronée (à se demander si ce n'est pas aléatoire).
Excel est sensé se servir des parametres regionaux pour convertir une chaine "jj/mm/aaaa" en date mais bizarement il se plante régulièrement et lit "mm/jj/aaaa". C'est bon 60 fois et la 61 c'est faux sans que tu saches pourquoi...
Si tu veux eviter des heures de recherches dans 15j pour une donnée erronée, prend les devant et transforme ta chaine en "jj mmmm aaaa" avec donc le mois en lettre avant de le passer à cdat(), ça lui leve toute ambiguïté. C'est facile, pas cher, et ça peut rapporter gros ;-)

Bon courage
-1
Momostovoi
 
Une solution est d'analyser ta Date en sortie du UserForm :

un truc comme ça ...

J'ai un userform appelé MonUserform
Une textbox qui est sensée accueillir des dates MaDate
Trois Variables de type String pour dissèquer le contenu de MaDate
On admet qu'on écrit dans la cellule R16


If MonUserform.MaDate.Text <> "" Then
MyDateDay = Left(MonUserform.MaDate.Text, 2)
MyDateMonth = Mid(MonUserform.MaDate.Text, 4, 2)
MyDateYear = Right(MonUserform.MaDate.Text, 2)
Cells(16, "R").Value = CDate(MyDateMonth & "/" & MyDateDay & "/" & MyDateYear)
Cells(16, "R").Value = Format(Cells(RowID, "R").Value, "dd/mm/yy")
End If



Left, Mid et Right vont découper MaDate.text afin d'en faire sortir les données essentielles "jj/mm/aa" , note : même si l'utilisateur tape "jj/mm/aaaa" ça marche !

Si ça peut aider ...
-1
Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention   17 354
 
Bonjour

Il semblerait que tes dates sont importées au format américain mois/jour/année !
OK ? Bye !
-2
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
remarque de m@rina judicieuse
eric
-2