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 :

[VBA] Format de saisie DATE dans TextBox


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [VBA] Format de saisie DATE dans TextBox
    Bonjour à tous,

    Je me retrouve face à un problème concernant une textbox dans un userform.

    Le UserForm sert d'outil de saisie sur une feuille Excel (nom, prénom, etc et surtout une date) et en validant les infos saisies dans les textbox ou combobox sont copiées dans les cellules.

    Voulant contrôler la forme de la date à saisir j'ai utilisé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox3_Change()
     TextBox3.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
        Valeur = Len(TextBox3)
        If Valeur = 2 Or Valeur = 5 Then TextBox3 = TextBox3 & "/"
    End Sub
    Mais le souci est le suivant :
    Lorsque je valide la saisie et que la valeur de ce textbox va dans la cellule les jours et les mois sont inversé si les 2 premiers caractères (les jours donc) sont inférieurs aux caractères 3 & 4 (les mois).

    Si la saisie est 01022010 (donc mis en forme 01/02/2010) la valeur de la cellule est 02/01/2010
    Si la saisie est 11/12/2010 la valeur de la cellule est 12/11/2010
    Si la saisie est 12/11/2010 la valeur de la cellule est 11/12/2010

    Mais pour 13/12/2010 la valeur est bien recopiée (ou pour 31/12/2010, etc)

    Bref c'est la misère ...

    J'avais aussi essayé avec un code équivalent qui est le suivant :

    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()
     
    Dim Exemple As String
    Dim ExDate As String
    Exemple = TextBox3.Value
    If (Len(Exemple) = 8) Then
    ExDate = Mid(Exemple, 1, 2) & "/" & Mid(Exemple, 3, 2) & "/" & Mid(Exemple, 5)
    TextBox3.Value = ExDate
    End If
     
    End Sub
    Et le problème est identique bien sur.

    Je ne souhaite pas passer avec un système combinant 3 combobox (il est plus facile de récupérer ainsi la date dans le textbox lorsque que le userform est relancé).
    Un contrôle avec une "validation" dans données est possible, mais je préfère que cela se gère au moment de la saisie et non à la validation (et ainsi ne pas laisser le choix à l'utilisateur pour le caractère séparant les JJMMAAAA).

    J'avais trouvé en cherchant sur le net un classeur excel très complet sur les masques de saisie mais bien trop compliqué pour mon niveau^^.

    Est ce que quelqu'un à déjà rencontré se problème où bien a-t-il une autre solution ?

    Je vous remercie par avance de votre aide.

    Cdt,

    Metil

  2. #2
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    pourquoi ne pas plutot utiliser le controle "Microsoft date and time picker"?
    a ajouter via les controles additionel
    ce serait plus joli et plus simple non?
    Alleï Bonjour chez vous!

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    C'est pas faux, je voulais rester sur un format de saisie rapide, dans un fichier il y a plusieurs fois des dates à saisir et si à chaque fois qu'un utilisateur doit lancer un userform puis date & time picker se lance pour chaque date à saisir, je pense que ça va devenir lourd :s

    Et je connais bien mal cet outil...

    N'y a t il pas un risque de conflit de version d'excel avec ce dernier ?

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Si la saisie est 01022010 (donc mis en forme 01/02/2010) la valeur de la cellule est 02/01/2010
    Si la saisie est 11/12/2010 la valeur de la cellule est 12/11/2010
    Si la saisie est 12/11/2010 la valeur de la cellule est 11/12/2010

    Bonjour,

    il y a une logique à ça, vois ce tutoriel :

    Comprendre et gérer les dates sous Excel et en VBA

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/04/2018, 09h57
  2. [XL-2007] Changement auto format date dans textbox
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/09/2012, 04h37
  3. Specifier le format d'une date dans un textbox
    Par manue514 dans le forum Windows Forms
    Réponses: 25
    Dernier message: 19/05/2009, 16h21
  4. Masque de saisie date dans textbox
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/08/2008, 13h15
  5. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44

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