IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Format date dans un textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 21
    Par défaut Format date dans un textbox
    Bonjour le forum , mon problème comme l'indique le titre est que je voudrais que dans le textbox on entre uniquement que la date donc j'ai essayé d'utiliser derriere le textebox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x.value = Format(x.value, "dd mm yyyy")
    mais le soucis est que dès que je commence par entrer un chiffre il le converti directement en la date auquel il correspond dans excel par exemple si je comence par entré 2 maintenant il sort 02/01/1900 . si quelqu'un peut m'aider.
    Ou est ce possible d'appeler le calendrier depuis un combobox?
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    mais le soucis est que dès que je commence par entrer un chiffre il le converti directement en la date auquel il correspond
    ce qui ne peut arriver que si tu as mis ce code dans l'évènement Change, ce qu'il ne convient bien évidemment pas de faire !
    Exécute ton code en sortie de la textbox.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    tu peux aussi forcer le textbox au format date dynamiquement quand tu tape ta date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 8 Then
            If Right(TextBox1, 1) = "/" Then TextBox1 = Mid(TextBox1, 1, Len(TextBox1) - 1)
       End If
    End Sub
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Select Case Len(TextBox1.Text)
        Case 2: If Val(TextBox1.Value) > 31 Then TextBox1.Value = "": MsgBox "jour trop grand" Else TextBox1 = TextBox1 & "/"
        Case 5: If Mid(TextBox1, 4, 2) > 12 Then TextBox1.Value = Mid(TextBox1, 1, 3): MsgBox "mois  trop grand" Else TextBox1 = TextBox1 & "/"
        Case 10: If Not IsDate(TextBox1) Then MsgBox "tu veux une claque ou quoi?" & vbCrLf & " Ou ta vu que ce jour existe dans le calendrier" & vbCrLf & " allez recommence!!!": TextBox1 = ""
        Case 11: TextBox1 = Mid(TextBox1, 1, 10)
        End Select
    End Sub
    1. essaie de commencer par un plus gros chiffre que 31
    2. essaie de mettre un mois plus grand que 12
    3. essaie de taper 31/02/2017
    4. essaie de taper plus qu'il n'en faut
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut
    Bonjour
    Merci pour ce code qui fonctionne très bien et avec humour
    Pour ma culture VBA encore faible pouvez vous décrire un peu le principe de ce code
    Merci d'avance

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    le principe est simple

    avec keydown on gère les touches entrée,suppr,back

    avec keypress on gère les autres touches

    avec keypress on interdit les lettre :que le pavé numérique

    on place les slashs en fonction du len(longueur de texte dans le textbox)

    et enfin test avec isdate voir si la date est valide (par exemple 31/02/2017) ne passera pas il n'y a pas 31 jour dans un mois de février
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Nouveau candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut textbox format date
    Merci pour cet éclairage (et la rapidité)
    Par contre je peux saisir des dates incohérentes : ex 31//12 passe dans ma BDD
    Nom : Textboxdate1.PNG
Affichages : 10733
Taille : 91,7 Ko
    Ensuite question subsidiare : j'ai un userform avec 36 dates (au total 75 textbox) et je me demande s'il existe manip pour appliquer ce code à un ensemble de textbox ?

  7. #7
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    le principe est simple

    avec keydown on gère les touches entrée,suppr,back

    avec keypress on gère les autres touches

    avec keypress on interdit les lettre :que le pavé numérique

    on place les slashs en fonction du len(longueur de texte dans le textbox)

    et enfin test avec isdate voir si la date est valide (par exemple 31/02/2017) ne passera pas il n'y a pas 31 jour dans un mois de février
    Bonjour,

    Et à propos de KeyUp?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    avec le keyup le code s'exécute quand tu la la touche tu l'aura compris

    pour tout tes textboxs il faudra subclasser (module classe) tu a un de mes exemple dans les contribs

    par contre ton double slachs je suis étonné
    je vais regarder
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    a oui en effet ca n'est pas la version que j'utilise

    bon pour methode avec keyup et keydown je t'ai ajouté la touche suppr
    et bloquer le clavier (impossible de taper autre chose que les touche 0 a 9
    par conséquence les slashs et autre virgules et compagnie ainsi que les lettres de l'alphabet =niet peau de cochon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 8 Then
            If Right(TextBox1, 1) = "/" Then TextBox1 = Mid(TextBox1, 1, Len(TextBox1) - 1)
        ElseIf KeyCode = 46 Then TextBox1 = ""
        End If
    End Sub
     
     
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode < 96 Or KeyCode > 105 Then
            If TextBox1 <> "" Then TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
        End If
        Select Case Len(TextBox1.Text)
        Case 2: If Val(TextBox1.Value) > 31 Then TextBox1.Value = "": MsgBox "jour trop grand" Else TextBox1 = TextBox1 & "/"
        Case 5: If Mid(TextBox1, 4, 2) > 12 Then TextBox1.Value = Mid(TextBox1, 1, 3): MsgBox "mois  trop grand" Else TextBox1 = TextBox1 & "/"
        Case 10: If Not IsDate(TextBox1) Then MsgBox "tu veux une claque ou quoi?" & vbCrLf & " Ou ta vu que ce jour existe dans le calendrier" & vbCrLf & " allez recommence!!!": TextBox1 = ""
        Case 11: TextBox1 = Mid(TextBox1, 1, 10)
        End Select
    End Sub
    maintenant tu n'a plus qu'a intégrer cela dans un module classe et classer tout tes textboxs concernés
    voili voilou
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Pourquoi saisir une date?

    https://www.developpez.net/forums/d1...6/#post8408985

  11. #11
    Nouveau candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut textbox format date
    Merci Patrick

    Ma modeste contribution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Txtdateenvoistc_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    TxtDateEnvoiSTC.SetFocus
     If KeyCode = 9 Then 'code 9 = tabulation
        If Len(TxtDateEnvoiSTC.Value) <> 10 Then
            MsgBox ("Format JJ/MM/AAAA non respecté")
            TxtDateEnvoiSTC = ""
        End If
    End If
    End Sub
    Par contre la tabulation fait que la souris passe sur textbox suivant et m'oblige a revenir sur textbox vide

    Pour la solution module de classe, je ne maitrise pas : en 2 mots tu peux préciser
    Encore merci

    Pour dysorthographie je n'ai pas le controle calendrier avec excel 2013 et malgré tuto je n'arrive pas à l'installer. De plus ayant 36 formats date je pense que ca peut etre lourd demanipuler 36 fois le calendrier

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je n'utilises pas de contrôle calendrier!

    Même pas de contrôle du tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] COMMENT APPLIQUER un format DATE dans un TextBox
    Par NICOLE 0075 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/09/2013, 16h03
  2. [XL-2002] Format date dans un textbox
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2010, 11h25
  3. Format date dans un TextBox en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2008, 08h44
  4. format date dans un textbox
    Par GTbenj dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/06/2008, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo