Transformer date texte en nombre

Résolu
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

  1. 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
    1. 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
      1. 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
        1. Bonjour,
          Dans la barre des formules je n'ai pas l'apostrophe
          0
      2. Bonjour,
        a valider des que vous avez atteint les 10 caracteres,

        x = CDate(TextBox5.Text) et vous pouvez faire des calculs sur date
        1
        1. 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
        2. 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
        3. Merci beaucoup ;)
          0
        4. 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
      3. 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
        1. 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