[excel] Problème format dates
Résolu
fragi
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Momostovoi -
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 !!!
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:
- Problème format date excel
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Liste déroulante excel - Guide
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
12 réponses
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
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
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 !
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 !
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
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
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 ?
...
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 ?
...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !).
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 !).
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 !
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 !
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 !
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 !
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
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
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 ...
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 ...