Discussion:
VBA Excel, date dans textbox
(trop ancien pour répondre)
CinéPhil
2005-11-22 14:46:02 UTC
Permalink
Bonjour,
J'ai créé un formulaire qui contient 2 textbox pour saisir des dates.
Lorsque l'utilisateur clique sur le bouton OK, un contrôle est fait par mon
programme pour vérifier que ce sont bien des dates qui ont été saisies dans
les texbox appropriées, puis les données sont transférées vers la feuille
Excel.
Si la date est du genre 22/11/2005, c'est correctement transféré. Mais si la
date est du genre 01/03/2005 (1er mars 2005), la date est transposée au
format anglais 03/01/2005 (et sera donc compris par un français 3 janvier
2005). Le format de la cellule du tableau est bien en jj/mm/aaaa et mon
programme demande bien format(TexBoxDate, "dd/mm/yyyy"). Il semble s'agir
donc d'un problème d'interprétation de la saisie par VB avant le formatage.
Je n'ai pas trouvé d'astuce permettant de résoudre ce problème. Merci de
m'aider.
Elliac
2005-11-22 15:21:05 UTC
Permalink
Bonjour,

Il faut utiliser la fonction CDate :
Range("A1")=CDate(TextBox1)

Camille
Post by CinéPhil
Bonjour,
J'ai créé un formulaire qui contient 2 textbox pour saisir des dates.
Lorsque l'utilisateur clique sur le bouton OK, un contrôle est fait par mon
programme pour vérifier que ce sont bien des dates qui ont été saisies dans
les texbox appropriées, puis les données sont transférées vers la feuille
Excel.
Si la date est du genre 22/11/2005, c'est correctement transféré. Mais si la
date est du genre 01/03/2005 (1er mars 2005), la date est transposée au
format anglais 03/01/2005 (et sera donc compris par un français 3 janvier
2005). Le format de la cellule du tableau est bien en jj/mm/aaaa et mon
programme demande bien format(TexBoxDate, "dd/mm/yyyy"). Il semble s'agir
donc d'un problème d'interprétation de la saisie par VB avant le formatage.
Je n'ai pas trouvé d'astuce permettant de résoudre ce problème. Merci de
m'aider.
PMO
2005-11-22 15:29:14 UTC
Permalink
Bonjour,

Une piste avec

Private Sub CommandButton1_Click()
Dim D As Date
If Not IsDate(Me.TextBox1.Text) Then
Me.TextBox1.Text = ""
Me.TextBox1.SetFocus
Exit Sub
End If
D = CDate(Me.TextBox1.Text)
ActiveSheet.[a1] = D
End Sub

Cordialement
--
PMO
Patrick Morange
Post by CinéPhil
Bonjour,
J'ai créé un formulaire qui contient 2 textbox pour saisir des dates.
Lorsque l'utilisateur clique sur le bouton OK, un contrôle est fait par mon
programme pour vérifier que ce sont bien des dates qui ont été saisies dans
les texbox appropriées, puis les données sont transférées vers la feuille
Excel.
Si la date est du genre 22/11/2005, c'est correctement transféré. Mais si la
date est du genre 01/03/2005 (1er mars 2005), la date est transposée au
format anglais 03/01/2005 (et sera donc compris par un français 3 janvier
2005). Le format de la cellule du tableau est bien en jj/mm/aaaa et mon
programme demande bien format(TexBoxDate, "dd/mm/yyyy"). Il semble s'agir
donc d'un problème d'interprétation de la saisie par VB avant le formatage.
Je n'ai pas trouvé d'astuce permettant de résoudre ce problème. Merci de
m'aider.
Hervé 92
2005-11-22 19:09:08 UTC
Permalink
Pour régler les problèmes de gestion des dates par VBA en format US,
j'utilise systématiquement une conversion en numérique (ex : 38253) par
l'intermédiaire d'une fonction. Il est ensuite très simple de convertir par
CDATE
Extrait du site:
"Quand on demande à Visual Basic ou à VBA de traiter une date, qu'elle soit
saisie dans une boîte de dialogue, issue d'une feuille Excel ou qu'elle
provienne d'un fichier ASCII ouvert à l'aide de opentext, invariablement, on
la retrouve soit au format américain (mm/dd/yyyy) soit sous forme de chaîne
de caractères mais rarement au format français(jj/mm/aaaa). Que faire ? "

C'est ici : http://www.excelabo.net/xl/dates.php#datefrancaise
Post by CinéPhil
Bonjour,
J'ai créé un formulaire qui contient 2 textbox pour saisir des dates.
Lorsque l'utilisateur clique sur le bouton OK, un contrôle est fait par mon
programme pour vérifier que ce sont bien des dates qui ont été saisies dans
les texbox appropriées, puis les données sont transférées vers la feuille
Excel.
Si la date est du genre 22/11/2005, c'est correctement transféré. Mais si la
date est du genre 01/03/2005 (1er mars 2005), la date est transposée au
format anglais 03/01/2005 (et sera donc compris par un français 3 janvier
2005). Le format de la cellule du tableau est bien en jj/mm/aaaa et mon
programme demande bien format(TexBoxDate, "dd/mm/yyyy"). Il semble s'agir
donc d'un problème d'interprétation de la saisie par VB avant le formatage.
Je n'ai pas trouvé d'astuce permettant de résoudre ce problème. Merci de
m'aider.
Loading...