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 :

Saisie d'une date dans une textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut Saisie d'une date dans une textbox
    Rebonjour à tous,
    J'ai fait une texbox ou l'utilsateur doit saisir une date...ce que je souhaiterai c'est que par exemple si l'utilsateur veuille mettre 22/11/2007 que ca mette 22 (et ne peux mettre un chiffre > 31) puis / et l'utilisateur tape le mois ( et ne peux pas mettre une chiffre > à 12) puis / et l'année et ne peux mettre que 4 chiffre. Merci Beaucoup

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    J'ai ce bout de code, vois ce que tu peux en faire

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub TxtDateFact_AfterUpdate()
    ' Variable de formatage de la date
    Dim BDC_Date As String
        ' Vérification si la date existante est déjà correcte
        If IsDate(TxtDateFact.Text) Then
        ' La date saisie est correcte
        Else
            ' La date saisie n'est pas formatée
            If IsNumeric(TxtDateFact.Text) Then
                ' La date est au format jjmmaa
                If Len(TxtDateFact.Text) = 6 Then
                    BDC_Date = Left(TxtDateFact, 2) & "/" & Mid(TxtDateFact, 3, 2) & "/20" & Right(TxtDateFact, 2)
                End If
                ' La date est au format jjmmaaaa
                If Len(TxtDateFact.Text) = 8 Then
                    BDC_Date = Left(TxtDateFact, 2) & "/" & Mid(TxtDateFact, 3, 2) & "/" & Right(TxtDateFact, 4)
                End If
            End If
            ' Vérification que la date formatée est correcte
            If IsDate(BDC_Date) Then
                TxtDateFact.Text = BDC_Date
            Else
                ' Dans les cas ou la saisie n'est pas correcte
                MsgBox "La date est incorrecte : " & TxtDateFact.Text
                TxtDateFact.SetFocus
            End If
        End If
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Je ne suis pas sur que çà réponde à la question...Mais je pense qu'il y a un moyen simple de le faire mais en tout cas merci beaucoup

  4. #4
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour,

    Une autre solution, lors de la validation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not IsDate (Me.texbox) then
    .........
    .........
    .........
    End if
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    En fait ce que je souhaite c'est que lorsque l utilisateur entre la date çà se mette direct en 22/11/2007 et que l'utilisateur ne puisse pas mettre 200700000....

  6. #6
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Il y à un tutoriel pour l'utilisation des contrôles dans les UserForm
    De SilkyRoad ou il indique comment forcer à indiquer une date ds un texbox
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par arnold95 Voir le message
    En fait ce que je souhaite c'est que lorsque l utilisateur entre la date çà se mette direct en 22/11/2007 et que l'utilisateur ne puisse pas mettre 200700000....
    Peut-être quelque chose comme ça

    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) > 5) And (Len(Exemple) < 10)) Then
            Application.EnableEvents = False
            ExDate = Mid(Exemple, 1, 2) & "-" & Mid(Exemple, 3, 2) & "-20" & Mid(Exemple, 5)
            TextBox3.Value = ExDate
            Application.EnableEvents = True
        End If
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  8. #8
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 54
    Points
    54
    Par défaut
    tu peux essayer ceci à adapter à ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub TextBox1_AfterUpdate()
     
    Dim dat, dat1 As String
    dat = Me.TextBox1.Text
    dat1 = Mid(dat, 1, 2) & "/" & Mid(dat, 3, 2) & "/" & Mid(dat, 5, 4)
    Me.TextBox1.Text = dat1
     
    End Sub
    Remplace textbox1 par ta propre textbox

  9. #9
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Partant du code de SilkyRoad:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox1_Change()
     
    TextBox1.MaxLength = 10 
    Valeur = Len(TextBox1)
     
    If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
    If Len(TextBox1) = 10 and Not IsDate(TextBox1) Then TextBox1 = ""
     
    End sub
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Merci beaucoup pour toutes ces réponses, j'ai utilisé le code de jean pierre qui marche bien sauf que lorsqu'on efface... par exemple si on a mis 21/12/2008 et qu'on veuille finalement mettre 21/11/2008...

  11. #11
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour,

    Effectivement la petite procédure que j’ai envoyée, n’est pas le top.
    Cela non plus, mais elle teste jour > 31 et mois > 12, plus la validité de la date et elle peut être modifiée si 12 doit devenir 11.
    (J’ai mis des – à la place de / , je nomme des fichiers pdf)
    Une première approche on doit pouvoir faire mieux.

    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
    20
    21
    22
    Private Sub DateHabilitation_Change()
                                Dim Valeur                  As Byte
     
        Me.DateHabilitation.MaxLength = 10
        Valeur = Len(Me.DateHabilitation)
     
        If Valeur = 2 And Mid(Me.DateHabilitation, 1, 2) > 31 Then
            Me.DateHabilitation.MaxLength = 2 ' interdit d'aller plus loin
            MsgBox "Jour non valide"
            Exit Sub
        End If
     
        If Valeur = 5 And Mid(Me.DateHabilitation, 4) > 12 Then
            Me.DateHabilitation.MaxLength = 5 ' interdit d'aller plus loin
            MsgBox "Mois non valide"
            Exit Sub
        End If
        If Valeur = 2 Or Valeur = 5 Then Me.DateHabilitation = Me.DateHabilitation & "-"
     
        If Valeur = 10 And Not IsDate(Me.DateHabilitation) Then Me.DateHabilitation = ""
     
    End Sub
    Je vais essayer de continuer, la procédure m’intéresse
    A plus tard
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  12. #12
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Petite rectif:


    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
    20
    21
    22
    Private Sub DateHabilitation_Change()
                                Dim Valeur                  As Byte
     
        Me.DateHabilitation.MaxLength = 10
        Valeur = Len(Me.DateHabilitation)
     
        If (Valeur = 2 Or Valeur = 10) And Mid(Me.DateHabilitation, 1, 2) > 31 Then
            If Valeur = 2 Then Me.DateHabilitation.MaxLength = 2
            MsgBox "Jour non valide"
            Exit Sub
        End If
     
        If (Valeur = 5 Or Valeur = 10) And Mid(Me.DateHabilitation, 4, 2) > 12 Then
            If Valeur = 5 Then Me.DateHabilitation.MaxLength = 5
            MsgBox "Mois non valide"
            Exit Sub
        End If
     
        If Valeur = 2 Or Valeur = 5 Then Me.DateHabilitation = Me.DateHabilitation & "-"
        If Valeur = 10 And Not IsDate(Me.DateHabilitation) Then Me.DateHabilitation = ""
     
    End Sub
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je te conseille de lire attentivement l'ensemble de cette discussion, qui te montrera la perversité des utilisateurs pour mettre ton code en défaut, mais aussi les 36 solutions envisagées pour les feinter? Mais prends ton week-end
    Sinon, tu as aussi une proposition d'ucfoutu et de jfontaine, dans Contribuez.
    Bonne chance

    PS - Une autre solution que j'aime bien ici

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Désolé du retard de ma réponse, je viens de me connecter...Merci beaucup pour votre aide...le code marche bien. Merci et bonne journée

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

Discussions similaires

  1. [AC-2007] Comparer une date d'une table et une date saisie
    Par minooo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/03/2019, 21h40
  2. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  3. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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