Transformer date texte en nombre

Résolu
Co_nexion Messages postés 333 Statut Membre -  
Co_nexion Messages postés 333 Statut Membre -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. Co_nexion Messages postés 333 Statut Membre
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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. Co_nexion Messages postés 333 Statut Membre
       
      Merci beaucoup ;)
      0
    4. Co_nexion Messages postés 333 Statut Membre
       
      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
  2. Yoda
     
    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. Co_nexion Messages postés 333 Statut Membre
       
      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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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. Co_nexion Messages postés 333 Statut Membre
       
      Bonjour,
      Dans la barre des formules je n'ai pas l'apostrophe
      0
  4. Co_nexion Messages postés 333 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Co_nexion Messages postés 333 Statut Membre
     
    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