Mystère! Date dans textbox dd/mm qui s'affiche mm/dd sur feuille! Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
P
Pikipeanut
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 21 août 2018
Version d'Excel : 2016

Message par Pikipeanut » 4 septembre 2018, 13:44

Bonjour,

Si dans une Userform, je rentre une date (dd/mm/aa) (dans une Texbox) qui remplit une cellule Excel, le mois et le jour de celle-ci sont inversés dans la cellule! (format mm/dd/aaaa).

Quelqu'un peut m'expliquer pourquoi le mois et l'année s'inversent lorsque je rentre une date dans ma textbox au format dd/mm/aa? Sachant qu'elle n'est pas configurée pour une date en particulier, si j'écris "coucou", ça affichera bien "coucou" dans ma cellule de destination.

Pour pallier ce problème actuellement, la seule solution que j'ai trouvé qui fonctionne est de mettre la cellule au format date mm/dd/aa qui du coup m'affiche la même chose que ce que j'ai saisi...

Je pense qu'il y a une explication à ce problème car là c'est une grosse bidouille que j'ai fait ^^

Merci!!
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'714
Appréciations reçues : 189
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 4 septembre 2018, 13:58

Bonjour,

C'est durant l'évènement qui te permet de valider le contenu de ta "textboxdate" dans l'une
des cellules excel ; tu dois lui préciser qu'il s'agit d'une date et le format :

Exemple évènement : Bouton validation (clic)
Worksheets("Feuil1").cells(1, 1).value= format(cdate(textboxdate), "mm/dd/yyyy")

:P
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 4 septembre 2018, 14:08

Bonjour,

Arrh ! :cry: Ne jamais utiliser Format pour affecter une date : Format produit du texte !

Reprenons, le phénomène n'a rien de mystérieux et il est normal (nonobstant le fait que Microsoft aurait pu faire en sorte qu'il en soit autrement, mais n'en a rien à f... !)
Tu penses saisir une date dans ta TextBox, mais ce n'est par définition que du texte, ayant un format de date.
Lorsque tu affectes ce texte à une cellule, VBA l'identifie comme date et convertit en date, mais sa reconnaissance se base sur un format américain, et dès lors que ton jour est inférieur à 13 tu te retrouves avec une inversion jour/mois.
On l'évite en forçant VBA à convertir avec CDate : on affecte CDate(TextBox1.Value). Là VBA fait opérer la reconnaissance du format de date, mais selon les paramètres de ton système, soit FR !

Cordialement.
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'714
Appréciations reçues : 189
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 4 septembre 2018, 14:19

Bien le Bonjour MFerrand.

J'avoue que je n'avais pas essayé sans "format" vu que cela fonctionnait dans mon fichier et que j'ai bien une date :mrgreen:
Modifié en dernier par Xmenpl le 4 septembre 2018, 14:25, modifié 1 fois.
P
Pikipeanut
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 21 août 2018
Version d'Excel : 2016

Message par Pikipeanut » 4 septembre 2018, 14:21

MFerrand a écrit :
4 septembre 2018, 14:08
Bonjour,

Arrh ! :cry: Ne jamais utiliser Format pour affecter une date : Format produit du texte !

Reprenons, le phénomène n'a rien de mystérieux et il est normal (nonobstant le fait que Microsoft aurait pu faire en sorte qu'il en soit autrement, mais n'en a rien à f... !)
Tu penses saisir une date dans ta TextBox, mais ce n'est par définition que du texte, ayant un format de date.
Lorsque tu affectes ce texte à une cellule, VBA l'identifie comme date et convertit en date, mais sa reconnaissance se base sur un format américain, et dès lors que ton jour est inférieur à 13 tu te retrouves avec une inversion jour/mois.
On l'évite en forçant VBA à convertir avec CDate : on affecte CDate(TextBox1.Value). Là VBA fait opérer la reconnaissance du format de date, mais selon les paramètres de ton système, soit FR !

Cordialement.
Super, merci pour l'explication très claire!
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 4 septembre 2018, 14:37

J'avoue que je n'avais pas essayé sans "format" vu que cela fonctionnait dans mon fichier et que j'ai bien une date :mrgreen:
Xmenpl : là tu as la chance qu'Excel recevant un texte ayant un format de date identifiable selon tes paramètres FR opère la conversion en date. C'est ce qui se passe lors d'une saisie manuelle : tu tapes du texte, Excel le reconnaît comme date selon tes paramètres, le convertit en date, applique un format de date à la cellule (si elle était antérieurement au format standard) et stocke la date sous forme de valeur numérique.

Mais cela ne se produit pas toujours lors d'une affectation externe, et tu peux te retrouver avec du texte au lieu d'une date dans la cellule.

Bonne journée.
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'714
Appréciations reçues : 189
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 4 septembre 2018, 14:57

|k) Oui bien compris , d'autant plus que ta formule est bien moins longue à écrire :good:
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message