Problème de format date d'un textbox à une cellule Excel

Bonjour.

Je rencontre un souci en VBA Excel.

J'ai trouvé sur un forum quelques lignes de codes qui me permettent de formater un textbox pour qu'on ne puisse y saisir qu'une date ...

Private Sub Textbox1_Change()

    TextBox1.BackColor = &H80000005

End Sub

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

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

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

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

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

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

    GoTo Fin

ErreurSaisie:

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

Fin:

End Sub

Private Sub NSaisie8_Enter()

    NSaisie8.Text = Replace(NSaisie8.Text, "/", "")
    NSaisie8.MaxLength = 8

End Sub

Cette partie là marche très bien ! J'ai bien un format date avec ajout des "/", vérification de la cohérence des dates (le 29 février n'est possible qu'en année bissextile ...) ... Bref c'est Top !

Sauf qu'ensuite, je valide avec un commandButton pour aller ecrire cette date dans une cellule de mon classeur excel. Sauf que quand j'écris dans ma cellule de cette manière :

Workbooks("IDEM_v1.xlsm").Sheets("Format_SISPO").Range("N2").Value = TextBox1.Value

Je me retrouve avec une date inversée par rapport à la date voulue (Mois et jour inversé ... le 07/01/2019 de mon textebox devient 01/07/2019 dans la cellule ...

J'ai l'impression que c'est la date de mon textbox qui est considérée comme anglaise, puisque la cellule de mon fichier Excel est bien au format dd/mm/yyyy. De plus, quand je traite cette date en ajoutant 27 jours ... je tombe sur le 28/07/2019 ...

Bref, comme d'hab, je suis un peu perdu dans la gestion des formats de dates, c'est pas mon fort ... Si vous avez une idée pour me dépanner, je suis preneur.

Merci de votre aide.

Onafe57

Bonjour

mettre CDate sur la textbox pour le format Date

Workbooks("IDEM_v1.xlsm").Sheets("Format_SISPO").Range("N2").Value = cdate(TextBox1.Value)

A+

Maurice

Super, ça marche.

Merci.

Bonjour

pense a valide

A+

Maurice

Rechercher des sujets similaires à "probleme format date textbox"