TextBox et format date

SwimCoachNico79

XLDnaute Occasionnel
Bonjour à tous,

J'ai parcouru ardemment le forum depuis ce matin... en vain...

Je m'explique :
1) j'ai un fichier excel avec un userform qui contient un textbox
Voici le code vba :

Private Sub TextBox11_Change()
Dim Valeur As Byte
TextBox11.MaxLength = 10
Valeur = Len(TextBox11)
If Valeur = 2 Or Valeur = 5 Then TextBox11 = TextBox11 & "/"
Sheets("Feuil2").Range("K13") = TextBox11.Value
End Sub

2) Le code fonctionne mais si je mets la date d’aujourd’hui dans le textbox (02/11/2011) il me met dans la cellule cible 11/02/2011... Je sais que bcp de sujets ont été rédigés à ce sujet mais avec la fonction CDate je n'y arrive pas... (je suis débutant).

3) Quelqu'un aurait-il une solution à me proposer ? (J'utilise office 2010)

Merci d'avance !
Swimcoachnico79
 

JNP

XLDnaute Barbatruc
Re : TextBox et format date

Bonjour Nico l'entraineur de la piscine du 79 :p, salut Pierrot :),
Techniquement, tu devrais utiliser 3 événements :
Code:
Private Sub UserForm_Initialize()
TextBox11.MaxLength = 10
End Sub
Private Sub TextBox11_Change()
Dim Valeur As Byte
Valeur = Len(TextBox11)
If Valeur = 2 Or Valeur = 5 Then TextBox11 = TextBox11 & "/"
End Sub
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Sheets("Feuil2").Range("K13").FormulaLocal = TextBox11.Value
End Sub
et le FormulaLocal utilises les préférences locales :rolleyes:...
Bonne fin de journée :cool:
 

Efgé

XLDnaute Barbatruc
Re : TextBox et format date

Bonjour SwimCoachNico79, Salut Pierrot :),
Je pense qu'il y a un problème car l'écriture de la date se fait au fur et à mesure de la saisie, donc dès le premier caractère (a ce moment ce n'est pas une date...)
Donc je verrais plutot ça (en partant du principe que tu as un bouton de validation dans ton USF:
Inutile de remettre le MaxLength à chaque entrée dans la textBox, il serait préférable de le mettre lors de l'initialisation du USF
VB:
Private Sub UserForm_Initialize()
TextBox11.MaxLength = 10
End Sub
Ensuite on gère la saisie:
VB:
Private Sub TextBox11_Change()
Dim Valeur As Byte
Valeur = Len(TextBox11)
If Valeur = 2 Or Valeur = 5 Then TextBox11 = TextBox11 & "/"
End Sub
Et pour finir on inscrit la date (en bétonnant un peu pour éviter les inversion Mois / Jours) :
VB:
Private Sub CommandButton1_Click()
Sheets("Feuil2").Range("K13") = DateSerial(Right(TextBox11.Value, 4), Mid(TextBox11.Value, 4, 2), Left(TextBox11.Value, 2))
End Sub
Ce n'est qu'une proposition.
Cordialement

EDIT Bonjour JNP :)
 

SwimCoachNico79

XLDnaute Occasionnel
Re : TextBox et format date

Pierrot93,

Quand j'utilise ton code comme suit :

Private Sub TextBox11_Change()
Dim Valeur As Byte
TextBox11.MaxLength = 10
Valeur = Len(TextBox11)
If Valeur = 2 Or Valeur = 5 Then TextBox11 = TextBox11 & "/"
Sheets("Feuil2").Range("K13") = CDate(TextBox11.Value)
End Sub

J'ai le un message : erreur d'execution '13' incompatibilité de type

Sheets("Feuil2").Range("K13") = CDate(TextBox11.Value) apparait en jaune dans le débogueur

Que dois-je faire ?
Merci d'avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : TextBox et format date

Bonjour SwinCaschNico, bonjour le forum,

Cette ligne fonctionne :
Code:
Sheets("Feuil2").Range("K13") = CDate(Me.TextBox11.Value)
mais pas dans la procédure Change de la TextBox11 car elle va générée des erreurs tant que la date n'est pas complète... Je te propose de faire comme ça :
Code:
Private Sub TextBox11_Change()
Dim Valeur As Byte
TextBox11.MaxLength = 10
Valeur = Len(TextBox11)
If Valeur = 2 Or Valeur = 5 Then TextBox11 = TextBox11 & "/"
End Sub
puis :
Code:
Private Sub TextBox11_AfterUpdate()
Sheets("Feuil2").Range("K13") = CDate(Me.TextBox11.Value)
End Sub
On aurait pu prendre la procédure Exit au lieu de AfterUpdate ou placer cette ligne sur le bouton de validation de l'UserForm (s'il y en a un)...

[Édition]
Ooops 'ache'ment en retard moi... Bonjour à tous !
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12