XL 2010 Forcer format date dans une TextBox

thunder23

XLDnaute Occasionnel
Bonjour,

Je n'arrive pas à forcer la TextBox en format date pour que quand j'entre par exemple dans celle-ci 02/12/19, j'appuie sur le bouton modifier dans mon UserForm ça affiche dans ma BDD en ce format (02 décembre 2019) au lieu de ça 02/12/19. Voici le code où je souhaite faire ce forçage:

VB:
'Pour le bouton modifier
Private Sub CommandButton_modifier_click()
    
    
    Dim ligne As Long
    Dim I As Integer
    
    If MsgBox("Confirmer la modification de cet article ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
        If Me.ComboBox_code.ListIndex = -1 Then Exit Sub
        ligne = Me.ComboBox_code.ListIndex + 2
        Ws.Cells(ligne, "B") = ComboBox_categorie
        For I = 1 To 39
            If Me.Controls("Textbox" & I).Visible = True Then
                Ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
            End If
        Next I
    End If
End Sub

Merci d'avance pour votre aide :)
 

thunder23

XLDnaute Occasionnel
Salut,
Essaye en remplaçant la ligne
Ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
par
Ws.Cells(ligne, I + 2) = CDate(Me.Controls("TextBox" & I").Value)
Sans aucune certitude
@+ Lolote83

Salut Lolote83,

Je viens d'essayer mais ça me mets en débogage, erreur d’exécution 13: Incompatibilité de type.
Est-ce qu'en mettant toutes les TextBox à la place c'est possible?
@+
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Je n'arrive pas à forcer la TextBox en format date pour que quand j'entre par exemple dans celle-ci 02/12/19, j'appuie sur le bouton modifier dans mon UserForm ça affiche dans ma BDD en ce format (02 décembre 2019) au lieu de ça 02/12/19. Voici le code où je souhaite faire ce forçage:

VB:
'Pour le bouton modifier
Private Sub CommandButton_modifier_click()
  
  
    Dim ligne As Long
    Dim I As Integer
  
    If MsgBox("Confirmer la modification de cet article ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
        If Me.ComboBox_code.ListIndex = -1 Then Exit Sub
        ligne = Me.ComboBox_code.ListIndex + 2
        Ws.Cells(ligne, "B") = ComboBox_categorie
        For I = 1 To 39
            If Me.Controls("Textbox" & I).Visible = True Then
                Ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
            End If
        Next I
    End If
End Sub

Merci d'avance pour votre aide :)
Bonjour,
Peut-être, en mettant les cellules de destination au bon format
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Elles y sont justement et c'est ça que je trouve bizarre

:rolleyes:
une piste pour la boucle
VB:
----------
'''''
        For I = 1 To 39
            If Me.Controls("Textbox" & I).Visible = True Then
                If IsDate(Me.Controls("TextBox" & I)) Then
                    ws.Cells(ligne, I + 2) = CDate(Me.Controls("TextBox" & I).Value)
                Else
                    ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
                End If
            End If
        Next I
        ''''''''''''
        ''''''
 

thunder23

XLDnaute Occasionnel
une piste pour la boucle
VB:
----------
'''''
        For I = 1 To 39
            If Me.Controls("Textbox" & I).Visible = True Then
                If IsDate(Me.Controls("TextBox" & I)) Then
                    ws.Cells(ligne, I + 2) = CDate(Me.Controls("TextBox" & I).Value)
                Else
                    ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
                End If
            End If
        Next I
        ''''''''''''
        ''''''

Re,

j'ai essayé ton code, il fonctionne très bien sauf qu'il me met des colonnes en date alors que c'est des nombres à virgule qu'il possède, est que c'est les virgules qui posent soucis?
@+
 

Jacky67

XLDnaute Barbatruc
une piste pour la boucle
VB:
----------
'''''
        For I = 1 To 39
            If Me.Controls("Textbox" & I).Visible = True Then
                If IsDate(Me.Controls("TextBox" & I)) Then
                    ws.Cells(ligne, I + 2) = CDate(Me.Controls("TextBox" & I).Value)
                Else
                    ws.Cells(ligne, I + 2) = Me.Controls("TextBox" & I).Value
                End If
            End If
        Next I
        ''''''''''''
        ''''''
Re..
Mettre en ligne le classeur, et une feuille avec inscrit en dur le résultat souhaité.
 

patricktoulon

XLDnaute Barbatruc
bonsoir a tous
sur certains System meme identiques il arrive que cdate ne suffise pas(sans doute une config ou librairie version différente)
perso j'envoie le dateserial( right(textbox1,4),mid(texbox1,4,2),left(textbox1,2))
bien sur il faut que ce format soit celui du textbox ;)
 

Jacky67

XLDnaute Barbatruc
bonsoir a tous
sur certains System meme identiques il arrive que cdate ne suffise pas(sans doute une config ou librairie version différente)
perso j'envoie le dateserial( right(textbox1,4),mid(texbox1,4,2),left(textbox1,2))
bien sur il faut que ce format soit celui du textbox ;)
Bonsoir patricktoulon
Certes, bien que je n'ai jamais rencontré ce problème.
L'idéale pour les dates serait d'utiliser un des calendriers dispo. sur ce forum.
Mais bon, ce n'est qu'un début de projet, des améliorations restent à faire ;)
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 173
Membres
112 677
dernier inscrit
Justine11