Date en toute lettre

Bonjour le Forum,

Comment puis je mettre mes textbox date en toute lettres

par exemple j'aimerai que 17-06-1956 donne le 17 juin 1956

Le code que j'utilise est

Private Sub TB1_Change()

Dim Valeur As Byte

TB1.MaxLength = 10 'nb caracteres maxi dans textbox

Valeur = Len(TB1)

If Valeur = 2 Or Valeur = 5 Then TB1 = TB1 & "-"

End Sub

Merci pour votre réponse

Bonsoir,

If Valeur = 10 and TB1_OK = False Then
TB1_OK = True
TB1 = format(TB1,"DD MMMM YYYY")
End If

création d'une variable TB1_OK afin de "sauter" cette partie de code une fois la date écrite...

Pas essayé

@ bientôt

LouReeD

Bonsoir,

merci

ça ne fonctionne pas j'ai mis ce code

Private Sub TB1_Change()

If Valeur = 10 And TB1_OK = False Then

TB1_OK = True

TB1 = Format(TB1, "DD MMMM YYYY")

End If

A essayer :

Option Explicit
Dim Textbox1_OK As Boolean

Private Sub TextBox1_Change()
    If Textbox1_OK = False Then
        Dim valeur As Byte
        valeur = Len(TextBox1.Value)
        If valeur = 2 Or valeur = 5 Then TextBox1.Value = TextBox1.Value & "/"
        If valeur = 10 And Textbox1_OK = False Then
            Textbox1_OK = True
            TextBox1.Value = Format(TextBox1.Value, "DD MMMM YYYY")
        End If
    End If
End Sub

cade à adapter

@ bientôt

LouReeD

PAR-FAIT !!

merci bcp

Bonsoir,

Merci de vos remerciements !

Mais la perfection n'est pas de ce monde !

Ci dessous un nouveau code avec l'ajout d'un interrupteur qui détecte la mise à jour du TextBox1, afin que le code ne soit pas joué deux fois de suite...

Une variable longueur TextBox1 afin de détecter une modification de la date en lettre, ce qui a pour effet de l'effacer complètement.

Option Explicit

Dim TextBox1_OK As Boolean ' interrupteur date en lettre = TRUE
Dim En_cours As Boolean ' interrupteur saisie en cours = TRUE
Dim TextBox1_Len As Byte ' mise en mémoire de la longueuer de la date en lettre pour tester si modification

Private Sub TextBox1_Change()
    If En_cours = False Then
        Dim valeur As Byte
        valeur = Len(TextBox1.Value)
        If TextBox1_OK = True And valeur <> TextBox1_Len Then
            En_cours = True
                TextBox1.Value = ""
            En_cours = False
            TextBox1_Len = 0
            TextBox1_OK = False
        End If
        If TextBox1_OK = False Then
            If valeur = 2 Or valeur = 5 Then
                En_cours = True
                    TextBox1.Value = TextBox1.Value & "/"
                En_cours = False
            ElseIf valeur = 10 And TextBox1_OK = False Then
                TextBox1_OK = True
                En_cours = True
                    TextBox1.Value = Format(TextBox1.Value, "DD MMMM YYYY")
                TextBox1_Len = Len(TextBox1.Value)
                En_cours = False
            End If
        End If
    End If
End Sub

Là on se rapproche de la perfection

Mais les Dieux du VBA de ce site vous trouverons quelque chose de bien plus propre !

@ bientôt

LouReeD

Rechercher des sujets similaires à "date toute lettre"