Transformer date texte en nombre

Résolu/Fermé
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015 - 18 mai 2012 à 13:49
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015 - 22 mai 2012 à 11:30
Bonjour,

J'utilise le code ci-dessous pour que les chiffres rentrés dans une textbox se mettent en format date. Malheureusement c'est un format texte qui ne permet pas de faire de calcul, auriez vous une idée pour qu'il apparaisse de cette manière en format nombre ?

'Création d'un format Date "../../...."
    Private Sub TextBox5_Change()
        Dim Valeur As Byte
        
'Nb caractères maxi autorisé dans le textbox
        TextBox5.MaxLength = 10
        Valeur = Len(TextBox5)
        If Valeur = 2 Or Valeur = 5 Then TextBox5 = TextBox5 & "/"
    
End Sub


5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 mai 2012 à 14:35
Bonjour,
a valider des que vous avez atteint les 10 caracteres,

x = CDate(TextBox5.Text) et vous pouvez faire des calculs sur date
1
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
18 mai 2012 à 16:49
Bonjour f894009, content de te revoir ;)

Dis moi ou dois je incorporer dans mon code ta ligne de code pour que celle-ci fonctionne
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 19/05/2012 à 10:38
Bonjour,
a valider des que vous avez atteint les 10 caracteres,

Dans votre Private Sub TextBox5_Change() il faut tester que les 10 caracteres sont atteints.

If  Valeur=10 then 
       x = CDate(TextBox5.Text) 
end if 


Bonne suite
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
21 mai 2012 à 10:42
Merci beaucoup ;)
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
21 mai 2012 à 12:51
Mais en faites cela ne me transforme pas la date en format nombre....
La date reste à gauche dans la cellule signifiant que c'est un format texte
0
Bonjour,

Il suffit d'affecter la valeur de TextBox5 à une variable de type Date

Sub test01()
Dim d As Date
'd = TextBox5.Text
d = "18/05/2012"
MsgBox Format(d, "dddd le dd Mmm yyyy")
End Sub
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
18 mai 2012 à 16:48
Bonjour Yoda,

Cette réponse ne me transforme pas à tous les coups la date.. J'ai de plus supprimer la textbox qui n'ai pas necessaire
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
21 mai 2012 à 13:15
Salut,

lorsque tu actives une cellule date dont la valeur se situe à gauche de ta cellule, regarde dans ta barre des formules si une appostrophe se trouve à gauche de la date.
exemple
'21/05/2012
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
21 mai 2012 à 14:21
Bonjour,
Dans la barre des formules je n'ai pas l'apostrophe
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
21 mai 2012 à 14:43
Je pense que j'ai du rater quelque chose d'évident mais je n'y arrive vraiment plus à m'y retrouver... Je met mon code en entier et peut être trouverez vous le problème qui me fait défaut.

Merci de m'indiquer ou je me rate concernant la transformation du format date texte en format date nombre

'Bouton Validation
    Public Sub CommandButton1_Click()
    
'Demande de saisi si champ(s) non renseigné(s)
    If TextBox1 = "" Then
        MsgBox " Le prénom doit être saisi"
        TextBox1.SetFocus
    Exit Sub
End If

    If TextBox2 = "" Then
        MsgBox "Le nom doit être saisi"
        TextBox2.SetFocus
    Exit Sub
End If

    If TextBox3 = "" Then
        MsgBox "L'identifiant doit être documenté"
        TextBox3.SetFocus
    Exit Sub
End If

If TextBox5 = "" Then
        MsgBox "La date de début de contrat doit être saisie"
        TextBox5.SetFocus
    Exit Sub
End If

    If TextBox6 = "" Then
        MsgBox "La date de fin de contrat doit être saisie"
        TextBox6.SetFocus
    Exit Sub
End If

    If TextBox7 = "" Then
        MsgBox "La quotité doit être saisie"
        TextBox7.SetFocus
    Exit Sub
End If
        
'Incremente automatiquement la ligne suivante
        Dim Ligne As Long
            Ligne = Sheets("CDD").[A65000].End(xlUp).Offset(1, 0).Row
             With Sheets("CDD")
                .Cells(Ligne, 1) = Me.TextBox1
                .Cells(Ligne, 2) = Me.TextBox2
                .Cells(Ligne, 3) = Me.TextBox3
                .Cells(Ligne, 4) = Me.Label10
                .Cells(Ligne, 5) = Me.TextBox4
                .Cells(Ligne, 6) = Me.TextBox5
                .Cells(Ligne, 7) = Me.TextBox6
                .Cells(Ligne, 10) = Me.TextBox7.Value * 1
                .Cells(Ligne, 11) = Me.TextBox8
                .Cells(Ligne, 12) = Me.TextBox9
        End With

'Efface les données des textboxs à la validation
    Dim ctrl As Variant
        For Each ctrl In Array(TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8)
        ctrl.Value = ""
        Next
        TextBox1.SetFocus

'Ferme le userform CDI et renvoi à l'accueil
    UserForm_CDDnew.Hide
    UserForm_Accueil.Show
    
End Sub

'Bouton +1
'Même construction que bouton validation
    
    Public Sub CommandButton2_Click()
    
'Demande de saisi si champ(s) non renseigné(s)
    If TextBox1 = "" Then
        MsgBox " Le prénom doit être saisi"
        TextBox1.SetFocus
    Exit Sub
End If

    If TextBox2 = "" Then
        MsgBox "Le nom doit être saisi"
        TextBox2.SetFocus
    Exit Sub
End If

    If TextBox3 = "" Then
        MsgBox "L'identifiant doit être documenté"
        TextBox3.SetFocus
    Exit Sub
End If

If TextBox5 = "" Then
        MsgBox "La date de début de contrat doit être saisie"
        TextBox5.SetFocus
    Exit Sub
End If

    If TextBox6 = "" Then
        MsgBox "La date de fin de contrat doit être saisie"
        TextBox6.SetFocus
    Exit Sub
End If

    If TextBox7 = "" Then
        MsgBox "La quotité doit être saisie"
        TextBox7.SetFocus
    Exit Sub
End If

'Incremente automatiquement la ligne suivante
        Dim Ligne As Long
            Ligne = Sheets("CDD").[A65000].End(xlUp).Offset(1, 0).Row
            With Sheets("CDD")
                .Cells(Ligne, 1) = Me.TextBox1
                .Cells(Ligne, 2) = Me.TextBox2
                .Cells(Ligne, 3) = Me.TextBox3
                .Cells(Ligne, 4) = Me.Label10
                .Cells(Ligne, 5) = Me.TextBox4
                .Cells(Ligne, 6) = Me.TextBox5
                .Cells(Ligne, 7) = Me.TextBox6
                .Cells(Ligne, 10) = Me.TextBox7.Value * 1
                .Cells(Ligne, 11) = Me.TextBox8
                .Cells(Ligne, 12) = Me.TextBox9
         End With
         

'Efface les données des textboxs
    Dim ctrl As Variant
        For Each ctrl In Array(TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8)
        ctrl.Value = ""
        Next
        TextBox1.SetFocus

End Sub

'Bouton Annuler
    Private Sub CommandButton3_Click()

'Efface les données des textboxs
    Dim ctrl As Variant
        For Each ctrl In Array(TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8)
        ctrl.Value = ""
        Next
        TextBox1.SetFocus
    
'Ferme le userform CDI et renvoi à l'accueil
    UserForm_CDDnew.Hide
    UserForm_Accueil.Show
    
End Sub

'Création d'un format Date "../../...."
    Private Sub TextBox5_Change()
        Dim Valeur As Byte
        
'Nb caractères maxi autorisé dans le textbox
        TextBox5.MaxLength = 10
        Valeur = Len(TextBox5)
            If Valeur = 10 Then
                x = CDate(TextBox5.Text)
        End If
    If Valeur = 2 Or Valeur = 5 Then TextBox5 = TextBox5 & "/"
    
End Sub

'Création d'un format Date "../../...."
    Private Sub TextBox6_Change()
        Dim Valeur As Byte
        TextBox6.MaxLength = 10
        Valeur = Len(TextBox6)
            If Valeur = 10 Then
                x = CDate(TextBox6.Text)
        End If
    If Valeur = 2 Or Valeur = 5 Then TextBox6 = TextBox6 & "/"

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
22 mai 2012 à 11:30
Merci à tous pour vos contributions, je change de voie et créer un calendar (bien plus ergonomique et pas tous ces problèmes) encore merci
0