Format Date TextBox VBA

Bonjour à tous,

Je cherche à imposer un format date particulier à une textbox.

Actuellement, mon code ressemble à ça:

Private Sub TextBox46_Change()
 TextBox1.BackColor = &H80000005

End Sub

Private Sub Textbox46_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    TextBox46.BackColor = &H80000005
    If InStr("0123456789", VBA.Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
        TextBox46.BackColor = &HFF&
    End If

End Sub

Private Sub Textbox46_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If Len(TextBox46.Text) = 0 Then
        GoTo Fin
    End If

    If Len(Replace(TextBox46.Text, "/", "")) <> 6 And Len(Replace(TextBox46.Text, "/", "")) <> 8 Then
        GoTo ErreurSaisie
    End If

    If Len(TextBox46.Text) = 6 Then
        If Right(TextBox46, 2) > 50 Then
            TextBox46 = Left(TextBox46, 4) & 19 & Right(TextBox46, 2)
        Else
            TextBox46 = Left(TextBox46, 4) & 20 & Right(TextBox46, 2)
        End If
    End If

    TextBox46.Text = Left(Replace(TextBox46.Text, "/", ""), 2) & "/" & Mid(Replace(TextBox46.Text, "/", ""), 3, 2) & "/" & Right(Replace(TextBox46.Text, "/", ""), 4)
    TextBox46.MaxLength = 10

    If Not IsDate(TextBox46.Value) Then
        GoTo ErreurSaisie
    End If

    GoTo Fin

ErreurSaisie:

    Cancel = True
    With TextBox46
        .BackColor = &HFF&
        MsgBox "Date saisie incorrecte"
        TextBox46.Text = Replace(TextBox46.Text, "/", "")
        .SetFocus
        .SelStart = 0
        .SelLength = Len(TextBox46.Text)
    End With

Fin:

End Sub

Ce que je souhaite, c'est avoir après validation de mon formulaire, un format date. Actuellement, ce qui est inscrit dans le formulaire n'est pas enregistré en format date. Cela me pose problème car le bon fonctionnement d'une formule nécessite un format.

Ensuite, je souhaite que mon format date apparaisse avec le style de l'exemple suivant : 22-déc.-15

Je vous remercie pour votre aide.

Bonjour Bessedela, bonjour le forum,

Sans ton fichier, le code passe mal...

Voilà comment je fais quand je veux renvoyer une date d'un contrôle vers une cellule sans inversion mois/jours et avec un format défini.

• Dans un premier temps, je sélectionne la colonne des cellules qui vont recevoir les dates et je lui applique le format désiré (dans mon exemple la colonne A).

• Ensuite je renvoie non pas la date mais le numéro de série de la date. Par exemple, j'ai tapé dans la Textbox1 la date 01/02/2017. À la validation des données sur le CommandButton1 de l'userForm j'ai ce code :

Private Sub CommandButton1_Click()
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DS As Long 'déclare la variable DS (Date Série)

DL = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne A
DS = DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value)) 'définit le numéro de série de la date de la TextBox1
Cells(DL + 1, "A").Value = DS 'renvoie la valeur de DS dans la cellule ligne DL + 1 colonne A
Unload Me 'vide et ferme l'userform en cours
End Sub

C'est du garanti 100%...

163bessedela-v01.xlsm (21.95 Ko)

Merci ThauThème,

C'est en partie ce dont j'ai besoin. Sauf que je souhaite que la textbox1 modifie toujours la même case. Ce que je vais saisir via le formulaire doit modifier la cellule sans ajouter de ligne.

Merci pour ton aide

Rechercher des sujets similaires à "format date textbox vba"