textbox en format date

  • Initiateur de la discussion Orodreth
  • Date de début
O

Orodreth

Guest
Bonjour. Je suis navré de vous embéter comme ça avec ma série de question ...

Dans mon appli sous VBA Excel 97, j'ai 2 userforms.

En cliquant sur l'un des commandbutton du premier, ça appel le second, qui est un écran de validation en réalité.

Dans ces 2 userforms, j'utilise 2 textbox que je voudrais assimiler à un format date. Ils sont pour l'instant en format texte, et bien que ça marche, lors du tri des cellules, il fait des erreurs de placement (ex: 9/6/06, 11/6/06, 10/6/06)

Est-ce qu'il y a un moyen de mettre ces 2 textbox (qui sont liés) au format Date ???
 

camarchepas

XLDnaute Barbatruc
Re : textbox en format date

Bonjour ,
Voici intégré dans votre code (Test partiel puisque pas de fichier représentatif)
par contre , je vois un essai de mise en auto des / , mais le mieux est de l'incorporer à l'événement Change du textbox1 et pas de l'appui bouton .

Enfin comme cela tant que l'on à pas 10 caractères l'on peut continuer à saisir , lorsque l'on à les 10 on test la conformité , puis l'on ce sert de Cdate pour convertir. voilà

Code:
 Private Sub CommandButton1_Click()
'Entrer la date et la coller
 Dim Valeur As Byte
 
'Vérifier le format de la date

     TextBox1.MaxLength = 10
     Valeur = Len(TextBox1)
     If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
     If Len(TextBox1) = 10 Then
       If Not IsDate(TextBox1) And Len(TextBox1) = 10 Then
         MsgBox "Format date incorrect"
         mDate = ""
         Exit Sub
        Else
         mDate = CDate(TextBox1.Value)
        'Saisir N° Local
         mLocal = TextBox2.Value
 
        'Saisir les Locaux provisories
         With Worksheets("POINT A DATE")
           .Cells(7, 11).Value = Me.TextBox3.Value
           .Cells(8, 11).Value = Me.TextBox4.Value
           .Cells(9, 11).Value = Me.TextBox5.Value
           .Cells(10, 11).Value = Me.TextBox6.Value
           .Cells(11, 11).Value = Me.TextBox7.Value
        End With
       
       Me.Hide
       End If
     End If
 

camarchepas

XLDnaute Barbatruc
Re : textbox en format date

Bonjour ,

Voici ,

En fait lorsque tu affectes ton tableau à ta cellule , il faut aussi utiliser cdate.

Et j'ai regardé pour le fonctionnement du filtre date .

Attention , sur abandon de l'userform par la croix , le code plante , par défaut la date pourrait être la date du jour, comme cela elle ne serait jamais vide.
 

Pièces jointes

  • Test pour ExcelDL.xlsm
    56.3 KB · Affichages: 182
  • Test pour ExcelDL.xlsm
    56.3 KB · Affichages: 110
  • Test pour ExcelDL.xlsm
    56.3 KB · Affichages: 170

camarchepas

XLDnaute Barbatruc
Re : textbox en format date

Regardes comme cela :

Dans copyformula , j'ai ajouté un test pour savoir si la date est renseignée dans la boucle juste avant écriture

Code:
With WsResult
For i = LBound(AllTheValue, 2) To UBound(AllTheValue, 2)
 If AllTheValue(0, i) <> "" Then

    .Cells(i + LastLine, 1) = CDate(AllTheValue(0, i))
    .Cells(i + LastLine, 2) = AllTheValue(1, i)
    .Cells(i + LastLine, 3) = AllTheValue(2, i)
    .Cells(i + LastLine, 4) = AllTheValue(3, i)
    'Remplis ta feuille resultat avec les valeurs du tableau
 End If
Next i
End With
 

Pièces jointes

  • Test pour ExcelDL.xlsm
    55.5 KB · Affichages: 147
  • Test pour ExcelDL.xlsm
    55.5 KB · Affichages: 111
  • Test pour ExcelDL.xlsm
    55.5 KB · Affichages: 185

Escargot04

XLDnaute Nouveau
Re : textbox en format date

Bonjour,

Je ne suis pas très doué, voir pas doué du tout en VBA, je tente désespérément de mettre au point un formulaire de saisie et suis bloqué pour la même raison, un 01/07/2016 qui s'inscrit 07/01/2016

J'ai essayé les différents codes disponibles ici, mais n'arrive pas à comprendre ce qu'il faut que j'adapte pour que cela fonctionne !

Voici le lien vers une version épurée de mon fichier :
http://escargot-archi.eu/upDocs/cas...de_Suivi_MHJ_version_pour_ExcelDownloads.xlsm

D'avance merci de votre aide

Code:
Dim j As Long

Dim Nb_Lignes_Total As Long

'on récupère le dernier numéro de ligne dans l'onglet Suivi des accompagnements
Nb_Lignes_Total = Sheets("Suivi des accompagnements").Range("B1048576").End(xlUp).Row

'Vérifier le format de la date, ajout trouvé sur ExcelDownloads
       If Len(TextBox3) = 10 Then
        If Not IsDate(TextBox3) And Len(TextBox3) = 10 Then
          MsgBox "Format date incorrect"
          mDate = ""
          Exit Sub
         Else
          mDate = CDate(TextBox3.Value)
        End If
    End If

'on assigne à la cellule souhaitée la value du textbox 2
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 2) = ComboBox1.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 5) = TextBox3.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 7) = ComboBox2.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 8) = ComboBox4.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 9) = ComboBox5.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 10) = ComboBox3.Value
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 11) = TextBox1.Value

UserForm1.Hide

End Sub
'Commandepour le bouton "Quitter"
Private Sub CommandButton3_Click()
Unload Me
End Sub
'Commande pour afficher l'UserForm avec le bouton '+'
Private Sub CommandButton4_Click()
Unload Me
UserForm1.Show
End Sub
'Commande qui ouvre le calendrier
Private Sub OuvreCalendrier_Click()
Calendrier.Show
End Sub
'Commande qui colle la date dans la cellule
Private Sub Calendrier_Click()
    TextBox3.Value = Calendar1.Value
End Sub
 

Escargot04

XLDnaute Nouveau
Re : textbox en format date

Re...

Un collègue est passé, je lui raconte mes mésaventure et il me donne la solution, pas de bol il n'est que de passage !!

Il fallait donc que je renseigne "mDate" à la place de "TextBox3.Value" à la ligne
Code:
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 5) = TextBox3.Value
Qui devient
Code:
Sheets("Suivi des accompagnements").Cells(Nb_Lignes_Total + 1, 5) = mDate
Ceci afin que le code mis au dessus soit pris en compte
Code:
If Len(TextBox3) = 10 Then
        If Not IsDate(TextBox3) And Len(TextBox3) = 10 Then
          MsgBox "Format date incorrect"
          mDate = ""
          Exit Sub
         Else
          mDate = CDate(TextBox3.Value)
        End If
    End If
Simple, mais quand on ne sais pas... on cherche un bout de temps :confused:
 

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 461
Membres
103 219
dernier inscrit
Akyrah