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 :

Problème de dates dans TextBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut Problème de dates dans TextBox
    salut
    voila je serais tres bref, je n'arrive pas a conditionner le format date car par exemple si une erreur de saisie par un utilisateur la date s'affiche toujours dans la cellule exemple le 12/13/2010 dans le textbox va afficher le 13 décembre 2010.
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox7_Change()
    IsDate TextBox7 = Format(TextBox7, "dd/mm/yyyy")
    Sheets("cdd_sans_periode_essai").Range("h38") = TextBox7.Value
    Range("h38") = Format(Range("h38"), "dd mmmm yyyy")
    End Sub

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    je pense que la facon la plus sur pour éviter une erreur de saisie "date" par un utilisateur est d'utiliser 3 combobox prérenseignés chacun par jour/mois/année

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    bonjour sabzzz
    je te remercie pour ta réponse, quoi que je suis vraiment un débutant en vba , je me demande bien si tu pourra m'aider pour le code de ta proposition.

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    je me demande bien si tu pourra m'aider pour le code de ta proposition
    oui, veut-tu mettre les ComboBox sur une feuille ou sur un UserForm ?

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    bonjour sabzzz
    oui, j'aimerai bien que tu essai de me fournir le code pour les combobox, comme ca je pourrai les inserer directement dans le textbox7 (normalement ca devra marche).

  6. #6
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    ou veut tu mettre les ComboBox sur une feuille de calcul ou sur un UserForm ?

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    salut sabzzz
    c'est dans le userform que j'aimerai ajouter ces combobox, et lié au textbox7 si cela est possible.

  8. #8
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    voila,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    For i = 2010 To 1930 Step -1
     Me.ComboBox1.AddItem i
    Next
    For i = 1 To 12
     Me.ComboBox2.AddItem i
    Next
    For i = 1 To 31
     Me.ComboBox3.AddItem i
    Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
    If Me.ComboBox2 = "" Then Me.ComboBox2.ListIndex = 0
    If Me.ComboBox3 = "" Then Me.ComboBox3.ListIndex = 0
    Me.TextBox7 = Format(DateSerial(ComboBox1, ComboBox2, ComboBox3), "yyyy-mm-dd")
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox2_Change()
    If Me.ComboBox1 = "" Or Me.ComboBox3 = "" Then GoTo fin
    Me.TextBox1 = Format(DateSerial(ComboBox1, ComboBox2, ComboBox3), "yyyy-mm-dd")
    fin:
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox3_Change()
    If Me.ComboBox1 = "" Or Me.ComboBox2 = "" Then GoTo fin
    Me.TextBox1 = Format(DateSerial(ComboBox1, ComboBox2, ComboBox3), "yyyy-mm-dd")
    fin:
    End Sub
    tu pourrais aussi mettre celle-ci pour le ComboBox1_Change,
    ceci oblige de renseigner les 3 combobox avant le mettre l'information dans le TextBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
    If Me.ComboBox2 = "" Or Me.ComboBox3 = "" Then GoTo fin
    Me.TextBox1 = Format(DateSerial(ComboBox1, ComboBox2, ComboBox3), "yyyy-mm-dd")
    fin:
    End Sub

  9. #9
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Pourquoi ne pas passer carrément pas un contrôle calendrier, c'est propre, pro, ergonomiquement ça correspond aux applications courantes, on ne peut pas faire d'erreur autres qu'entres deux dates

    Il y en a un dans le tuto dans le classeur exemple USF demo DATES avec le lien pour avoir les contrôles si besoin...

    L'OCX MSCOMCT2.OCX permet d'utiliser des contrôles supplémentaires dans vos classeurs :
    .../...
    Contrôle MonthView Microsoft
    Contrôle DTPicker Microsoft
    .../...
    De plus toujours dans le code fournit, tu peux remarquer que la date choisie est reportée dans un label (pas de confusion, ce n'est pas éditable pas l'utilisateur, mais tu peux utiliser une textbox lockée aussi...)...


    cordialement,

    Didier

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    salut
    j'ai copier coller le code des trois combobox + userform_initialize mais ca ne marche pas encore car je pense que ces derniers ne sont pas lié au textbox7, et je ne c'est pas si je doit supprimer le code de mon textbox7 ou je dois remplacer private sub userform_initialize par Private Sub TextBox7_Change()
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox7_Change()
    IsDate TextBox7 = Format(TextBox7, "dd/mm/yyyy")
    Sheets("cdd_sans_periode_essai").Range("h38") = TextBox7.Value
    Range("h38") = Format(Range("h38"), "dd mmmm yyyy")
    End Sub

  11. #11
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    supprimer le code du textbox7.

  12. #12
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    bonjour sabzzz
    ok j'ai supprimer le code mais desque je lance le userform un message s'affiche (ERREUR DE COMPILATION VARIABLE NON DEFINIE ) sur cette partie du code:
    For i = 2010 To 1930 Step -1

  13. #13
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    si tu as mit Option Explicit dans le haut du module il faut obligatoirement déclarer les variables,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
    Dim i As Integer '<-------------------------- ici
    For i = 2010 To 1930 Step -1
     Me.ComboBox1.AddItem i
    Next
    For i = 1 To 12
     Me.ComboBox2.AddItem i
    Next
    For i = 1 To 31
     Me.ComboBox3.AddItem i
    Next
    End Sub

  14. #14
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    salut sabzzz
    je vous remercie mais le format de la date est incorrect car si je saisie dans combobox la date du 04 mai 2010, j'aurai dans le textbox la date du 31 octobre 2009, sinon si bon le message d'erreur n'apparaisse plus.

  15. #15
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour DRH01,

    il faut mettre la propriété des combobox, MatchRequired à True, l'utilisateur ne peut pas quitter le contrôle ComboBox tant que le texte saisi ne correspond pas à une entrée de la liste existante.

    voici le fichier :
    http://www.cijoint.fr/cjlink.php?fil...cij55O9KqM.xls

  16. #16
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    je te remercie pour ton aide, ça marche très bien et ça me donne l'envie de continuer a essayer de faire quelque chose pour mon fichier du personnel.

  17. #17
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Salut sabzzz
    j'ai pu télécharger un fichier excel très intéressant nommé DVP DemoDateBox.xls, et comme c'est juste maintenant que je m'applique sur le vba je n'ai pas récupérer un bout de son code.
    si vous pouvais juste jeter un coup d'œil.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [CR10] Problème de date dans l'en-tête de groupe
    Par bernie.noel dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/08/2005, 00h48
  2. problème champ date dans base oracle
    Par ludovik dans le forum Oracle
    Réponses: 6
    Dernier message: 25/07/2005, 15h48
  3. Problème de date dans fonction utlisateur
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h25
  4. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  5. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21

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