textbox en format date

  • Initiateur de la discussion Orodreth
  • Date de début
O

Orodreth

Guest
Bonjour. Je suis navré de vous embéter comme ça avec ma série de question ...

Dans mon appli sous VBA Excel 97, j'ai 2 userforms.

En cliquant sur l'un des commandbutton du premier, ça appel le second, qui est un écran de validation en réalité.

Dans ces 2 userforms, j'utilise 2 textbox que je voudrais assimiler à un format date. Ils sont pour l'instant en format texte, et bien que ça marche, lors du tri des cellules, il fait des erreurs de placement (ex: 9/6/06, 11/6/06, 10/6/06)

Est-ce qu'il y a un moyen de mettre ces 2 textbox (qui sont liés) au format Date ???
 

jojo2006

XLDnaute Occasionnel
Re : textbox en format date

bonjour, en fait lorsque j'essai la solution de justine
j'ai une inversion du mois et du jour lors du passage valeur textbox--> valeur Cellule

solution de justine

Private Sub TextBox1_AfterUpdate()
TextBox1.Value = Format(TextBox1.Value, "dd/mm/yyyy")
End Sub

dans l'exemple suivant:

je tape 10-5-6 (10 mai 2006) dans ma textbox
après update

la textbox affiche 10/05/2006 OK

mais lorsque je copie la valeur de la textbox vers une feuille comme suit

Cells(1, 6) = TextBox1.Value


la valeur dans la cellule devient 5/10/2006 autrement dit 5 octobre 2006



pourquoi excel passe du 10 mai au 5 octobre lorsque j''envoie la valeur de la textbox vers une cellule


pour info le parametre d'affichage cellule est en francais (format de cellule, date, parametres régionnaux)

merci à tous
 
Dernière édition:

jojo2006

XLDnaute Occasionnel
Re : textbox en format date

après essai, la solution de pascale convient , c'est vraiment au moment de la copie vers la feuille qu'étais mon probleme mais l'afterupdate de justine convient pour l'affichage.

Les 2 solutions sont à prendre merci et désolé
 

Kintin

XLDnaute Nouveau
Re : textbox en format date

Bonjour le forum...

J'ai essayé la solution de pascal mais sans succes...

une de mes lignes est :
Sheets("Dates").Cells(BL, "C").Value = UserForm2.TextBox37.Value

Je l'ai modifiée en :
Sheets("Dates").Cells(BL, "C").Value = CDate(UserForm2.TextBox37.Value)

Mais il me dit "débogage"... erreur d'exécution

j'ai mis le cdate devant sheets et là c'est erreur de compilation

J'ai changé tout mes formats en formats date... je ne sais plus quoi faire pour éviter cette inversion (jour/mois)
 

job75

XLDnaute Barbatruc
Re : textbox en format date

Bonjour le fil, le forum,

Attention, CDate beugue si ce qu'on lui donne à convertir n'est pas une date dans un format reconnaissable par VBA.

Bug par exemple si la TextBox est vide.

Utiliser donc :

Code:
With UserForm2.TextBox37
If IsDate(.Value) Then Sheets("Dates").Cells(BL, "C") = CDate(.Value)
End With
ou simplement :

Code:
On Error Resume Next
Sheets("Dates").Cells(BL, "C") = CDate(UserForm2.TextBox37.Value)
Nota : ce qu'il faut avoir compris c'est que CDate ne fait pas un changement de format (comme la fonction Format) mais bien une conversion du type de donnée : texte => date.

A+
 

Kintin

XLDnaute Nouveau
Re : textbox en format date

Ok, Je vais essayer la solution de job75...

et pour répondre à pascal, le BL c'est une variable pour choisir la ligne en fonction d'un numero de dossier

(Dim BL As Integer
Dim Lg As Integer
Lg = Sheets("Recherche").Range("c1").Value
BL = Lg - 999)

Merci à tous (et spécialement à vous 2 ;-)), je vous tiens au courant si cela marche dans le courant de la journée

(décidément pascal, tu es sur tout les sujets ^^)


---------------------
EDIT :

Voilà, ça fonctionne correctement maintenant,

par contre impossible de supprimer la date que j'ai insérée...

il faudrait peut etre rajouté un "else" en cas de textbox vide ???

j'essaye ça :
Else: Sheets("Dates").Cells(BL, "C") = UserForm2.TextBox37.Value

--------------
EDIT 2 : VOILA C'EST OK MAINTENANT

apparement sur un with, le else ne marche pas, j'ai donc remis un "if, then, ..." à l'interieur du with...

With UserForm2.TextBox37
If IsDate(.Value) Then Sheets("Dates").Cells(BL, "C") = CDate(.Value)
If UserForm2.TextBox37.Value = "" Then
Sheets("Dates").Cells(BL, "C") = UserForm2.TextBox37.Value
End If
End With

MERCI A TOUS, J'ai appris énormément et j'en apprend plus chaque jour où je passe sur ce forum...
Merci le forum, merci les posteurs, merci les vba-addict ^^
 
Dernière édition:

MsVixene

XLDnaute Nouveau
Re : textbox en format date

Bonjour,

Je déterre le sujet mais j'aimerais adapter la solution de Job75 à mon petit code, mais je n'y arrive pas :/
J'ai aussi ce problème d'inversion quand je saisi des jours qui commencent par 0...

Code:
mDate = CDate(TextBox1.Value)

    Dim Valeur As Byte
    TextBox1.MaxLength = 10
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
    If Not IsDate(mDate) Then
        MsgBox "Format date incorrect"
        mDate = ""
        Exit Sub
    End If

Merci
 

camarchepas

XLDnaute Barbatruc
Re : textbox en format date

Bonjour ,

Voici une démo , il faut donc un userform avec une textbox1 de saisie date et un bouton de validation

Copiez le code dans le module du userform

et voilà

Code:
Private Sub CommandButton1_Click()
MsgBox TextBox1
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If IsDate(TextBox1.Value) Then
    mDate = CDate(TextBox1.Value)
 Else
    MsgBox "Format date incorrect"
    mDate = ""
End If
End Sub
 

MsVixene

XLDnaute Nouveau
Re : textbox en format date

Je me suis mal exprimée dans le sens où je n'ai pas mis tout le code, du coup je n'arrive pas à l'adapter :/

Voici ce que j'ai dans mon module, pourriez-vous simplement adapter votre partie svp ? J'ai essayé mais mon userform ne fonctionne plus correctement :S

Code:
Private mDate As String
Private mLocal As String

Property Get TheDate() As String
    'Definit la date en Lecture
    TheDate = mDate
End Property

Property Let TheDate(TheDate As String)
    'Definit la date en ecriture
    mDate = TheDate
End Property

Property Get LocalNumber() As String
    'Definit le numero de Local en Lecture
    LocalNumber = mLocal
End Property

Property Let LocalNumber(LocalNumber As String)
    'Definit le numero de Local en Ecriture
    mLocal = LocalNumber
End Property
Private Sub CommandButton1_Click()

'Entrer la date et la coller
mDate = CDate(TextBox1.Value)

'Vérifier le format de la date
    Dim Valeur As Byte
    TextBox1.MaxLength = 10
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
    If Not IsDate(mDate) Then
        MsgBox "Format date incorrect"
        mDate = ""
        Exit Sub
    End If

'Saisir N° Local
mLocal = TextBox2.Value

'Saisir les Locaux provisories
Worksheets("POINT A DATE").Cells(7, 11).Value = Me.TextBox3.Value
Worksheets("POINT A DATE").Cells(8, 11).Value = Me.TextBox4.Value
Worksheets("POINT A DATE").Cells(9, 11).Value = Me.TextBox5.Value
Worksheets("POINT A DATE").Cells(10, 11).Value = Me.TextBox6.Value
Worksheets("POINT A DATE").Cells(11, 11).Value = Me.TextBox7.Value
   
Me.Hide
 
End Sub

Private Sub TextBox1_Change()

End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote