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 de date dans un UserForm


Sujet :

Macros et VBA Excel

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Format de date dans un UserForm


    Dans un UserForm, j'ai une TextBox dans laquelle je saisie une date avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox3_Change()
        TextBox3.MaxLength = 10
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
        If Len(TextBox3) = 10 And Not IsDate(TextBox3) Then TextBox3 = ""
        Range("B13").Value = TextBox3
    End Sub
    Comme vous pouvez le voir, je recupere la date saisie pour la copier dans une cellule de la feuille Excel

    La date est saisie au format jj/mm/aa

    Et je voudrais qu'elle soit affiché au format au format jj/mm/aaaa dans la cellule où elle est copiée

    J'ai regardé un peu partout dans le forum, plein de post parle du sujet mais j'y ai pas trouvé de solution



    Au passage petite question autre pour le format date, je vooudrais un peu la même chose avec un format nombre (simplement un espace entre les milliés et les centaines



    Peut un petit code au niveau des cellules et sufisant

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour le forum, FCL

    essaies ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B13").Value = format(TextBox3,"dd/mm/yyyy")
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Je ne sais pas s'il y a le contrôle Microsoft MaskEdBox d'origine dans excel (j'ai aussi VB6), si oui, pour entrer une date c'est l'idéal avec un masque.
    Tu teste dans l'événement change mais tu pourrais le faire dans KeyDown avec KeyCode=13
    Pour formater un nombre comme tu demande...
    Cells(Y,X) = format(Cells(Y,X),"### ### ###.000") par exemple.
    A+

  4. #4
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci

    Pour les dates sa a l'air de marcher mais quelqu'un aurrait'il une idée pour le format nombre ??

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    tout dépend de tes besoins

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = format(TextBox3,"0##.###.00")
    ce n'est qu'un exemple, attention au textbox concerné !!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Je vien de m'appersevoir que pour les date sa m'inverse les mois et les jours :

    Sa me l'ecrit sous la forme mm/jj/aaaa alors que je saisi jj/mm/aa

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    C'est l'inverse (ne me demandes pas pourquoi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B13").Value = format(TextBox3,"mm/dd/yyyy")
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci casefayere on dirait que tou marche comme il le faut

    Si j'ai un probléme je reviendrais vous voir mais en attendent je met

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par casefayere Voir le message
    C'est l'inverse (ne me demandes pas pourquoi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B13").Value = format(TextBox3,"mm/dd/yyyy")
    Il faut éviter de forcer le format de ce qui est écrit dans une cellule Excel.
    Pour Excel, une date est un nombre.
    Pour générer ce nombre il faut utiliser CDate() qui prendra les paramètres locaux de Windows:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B13").Value = CDate(TextBox3)
    Pour que l'affichage de ce nombre se fasse en format date, il faut changer le format de la cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B13").NumberFormat = "dd/mm/yyyy"
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Désoler AlainTech mais sa marche pas se que tu me donne comme code

    Ou alors je n'arrive pas a l'appliquer au mien

    Je te rappelle mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox3_Change()
        TextBox3.MaxLength = 10
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
        If Len(TextBox3) = 10 And Not IsDate(TextBox3) Then TextBox3 = ""
        Range("B13").Value = Format(TextBox3, "mm/dd/yyyy")
    End Sub
    Peut etre qu'il faut supprimer des lignes a mon code déjà existant

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par FCL31 Voir le message
    Désoler AlainTech mais sa marche pas se que tu me donne comme code
    Pas très constructif comme réponse.
    Qu'est-ce qui ne marche pas?
    Un message d'erreur?

    En reprenant ton code, je verrais quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox3_Change()
        TextBox3.MaxLength = 10
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
        If Len(TextBox3) = 10 And Not IsDate(TextBox3) Then TextBox3 = ""
        Range("B13").NumberFormat = "dd/mm/yyyy"
        Range("B13").Value = CDate(TextBox3)
    End Sub
    Ceci dit, en relisant ton code, je me dis que ça doit planter pas mal puisque tu écris dans ta cellule à chaque modification dans TextBox3, que la date soit valide ou pas.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  12. #12
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    J'avait esseyer avec se code

    j'ai mis une impression d'ecran du message d'erreur que sa m'affiche

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Ceci dit, en relisant ton code, je me dis que ça doit planter pas mal puisque tu écris dans ta cellule à chaque modification dans TextBox3, que la date soit valide ou pas.
    Tu confirmes donc ce que je pensais.

    Tu devrais n'écrire dans la cellule que quand ta date est validée.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  14. #14
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Tu confirmes donc ce que je pensais.

    Tu devrais n'écrire dans la cellule que quand ta date est validée.
    Je ne comprend pas ce que tu veu dire

    Comment puis-je donc validée la date pour pouvoir l'ecrire dans la cellules

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Un exemple, non testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub TextBox3_Change()
        TextBox3.MaxLength = 10
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
        If Len(TextBox3) = 10 And Not IsDate(TextBox3) Then
          TextBox3 = ""
        Else
          Range("B13").NumberFormat = "dd/mm/yyyy"
          Range("B13").Value = CDate(TextBox3)
        End If
    End Sub
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  16. #16
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Désolé, j'ai toujour la même erreur

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je ne peux que te conseiller de faire du pas à pas et de regarder le contenu de TextBox3 avant de faire le CDate.

    De plus, je ne trouve pas très judicieux d'écrire dans la cellule à l'intérieur de l'événement Change de TextBox3.
    Je le ferais plutôt sur la validation du usf.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,

    Une petite modification dans le code proposé par AlainTech et ça devrait marcher (écriture de la date dans la cellule QUE si le texte fait 10 caractères ET qu'il représente une date valide) :
    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 TextBox3_Change()
        TextBox3.MaxLength = 10
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
        If Len(TextBox3) = 10 Then
            If Not IsDate(TextBox3) Then
                TextBox3 = ""
            Else
                Range("B13").NumberFormat = "dd/mm/yyyy"
                Range("B13").Value = CDate(TextBox3)
            End If
        End If
    End Sub

Discussions similaires

  1. [XL-2003] Formater Variable Date dans Userform
    Par FouJP dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2012, 23h39
  2. [WD-2007] format de date dans USERFORM
    Par Jumanji dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/01/2012, 15h57
  3. [SQL 9i ] format de date dans un where
    Par booth dans le forum Oracle
    Réponses: 5
    Dernier message: 14/10/2005, 10h23
  4. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  5. [VBA] Pb de format des dates dans un état
    Par linda15975 dans le forum IHM
    Réponses: 45
    Dernier message: 21/06/2005, 14h49

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