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 :

masque de saisie date et heure


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    cadre d'éxploitation
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : cadre d'éxploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut masque de saisie date et heure
    bonjour tout le monde

    SVP quelqu'un pourrait il m'aider pour le masque de saisie d'un textbox que je voudrais mettre sous la forme de "jj/mm/aaaa hh:mm" (ex 20/03/2019 15:42), parcequ'au fait je l'utilise pour calculer la duréé d'une operation d'exploitation qui est la different entre initial et final.

    merci

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Demander une saisie de date dans une Textbox, c'est chercher les ennuis.
    Une textbox, comme son nom l'indique, est conçue pour saisir du texte.
    Même en supposant que l'utilisateur saisisse la date correctement (ce qui est loin d'être garanti), la transformation texte > Date à une chance sur deux de mal se passer étant donné l'anglophilie de VBA.
    Pour garantir un résultat correct, il faudrait décomposer la date en valeurs élémentaires (jour, mois, année, heure, minute) pour la recomposer.

  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
    https://www.developpez.net/forums/bl...que-dynamique/

    ca te donnera une idée du boulot pour faire un masque de saisie et ca n'est pas ma meilleure version il y a un fichier en piece jointe
    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
    Membre averti
    Homme Profil pro
    cadre d'éxploitation
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : cadre d'éxploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut
    Merci bien patricktoulon votre code m'aide beaucoup, mais moi j'ai besoin d'nsérer meme l'heure de début dans le textbox, alors es ce que c'est possible.

  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
    re
    oui c'est possible mais c'est du boulot a concevoir un masque de saisie "--/--/---- --:--:--" avec control de validité

    tu pourrais te servir des formats perso avec multiple separateur de mon model mais tu n'aurais pas le control de la validité de la date

    c'est pas du niveau debutant
    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
    Dessinateur CAO DAO
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dessinateur CAO DAO
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Par défaut
    Si tu veux que du texte essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.TextBox1.Value=Format(Now(), "dd/mm/yyyy hh:mm")

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Twosiv Voir le message
    Si tu veux que du texte essaie ça:
    me.TextBox1.Value=Format(Now(), "dd/mm/yyyy hh:mm")
    Dans la mesure où ce qui est à saisir est une date de début et une date de fin, il est peu probable qu'on puisse se contenter d'une fonction Now().
    De plus, si c'était le cas, il n'y aurait pas d'intérêt à créer un masque de saisie.
    Et enfin, comme dans la demande il est précisé que le but est de faire la différence entre deux dates, proposer de les transformer en texte est à pro une mauvaise idée.

  8. #8
    Membre averti
    Homme Profil pro
    cadre d'éxploitation
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : cadre d'éxploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut
    Trés astutieux mais ça ne m'aide pas beaucoups

    merci comme meme

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste mais comme il est dit ici, il est compliqué de faire un masque de saisie fiable. Ce que je te présente filtre la saisie effectuée mais il n'y a pas de masque de saisie à proprement parler comme on peut trouver dans Access :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        Select Case KeyAscii
     
            Case 32, 47, 58, 48 To 57 'espace, slash, deux-points et chiffres
     
            Case Else: KeyAscii = 0
     
        End Select
     
    End Sub
     
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        Dim I As Integer
        Dim Texte As String
     
        With TextBox1
     
            'contrôle la bonne saisie
            For I = 1 To Len(.Text)
     
                Select Case I
     
                    Case 1, 2, 4, 5, 7, 8, 9, 10, 12, 13, 15, 16
                        If Not IsNumeric(Mid(.Text, I, 1)) Then .Text = Left(.Text, I - 1)
     
                    Case 3, 6
                        If Mid(.Text, I, 1) <> "/" Then .Text = Left(.Text, I - 1) & "/"
     
                    Case 11
                        If Mid(.Text, I, 1) <> " " Then .Text = Left(.Text, I - 1) & " "
     
                    Case 14
                        If Mid(.Text, I, 1) <> ":" Then .Text = Left(.Text, I - 1) & ":"
     
                End Select
     
            Next I
     
            'ajoute les caractères pour une saisie plus rapide
            Select Case Len(.Text)
     
                Case 2, 5: .Text = .Text & "/"
     
                Case 10: .Text = .Text & " "
     
                Case 13: .Text = .Text & ":"
     
            End Select
     
            'les secondes ne pouront être saisies
            If Len(.Text) > 16 Then .Text = Left(.Text, Len(.Text) - 1)
     
            'contrôle la validité des veleurs entrées
            If Len(.Text) = 16 Then
     
                If Valide(.Text, Texte) = False Then
     
                    If InStr(Texte, "Date") <> 0 Then MsgBox Texte: .Text = "" Else MsgBox Texte: .Text = Left(.Text, 11)
     
                End If
     
            End If
     
        End With
     
    End Sub
     
    Function Valide(Valeur As String, Retour As String) As Boolean
     
        Dim LaDate As Date
     
        Valide = True
     
        On Error Resume Next
        LaDate = DateValue(Split(Valeur, " ")(0))
     
        If Err.Number <> 0 Then
     
            Valide = False
            Retour = "Date non valide !"
            Exit Function
     
        End If
     
        Err.Clear
     
        LaDate = TimeValue(Split(Valeur, " ")(1))
     
        If Err.Number <> 0 Then
     
            Valide = False
            Retour = "Heure non valide !"
     
        End If
     
    End Function

  10. #10
    Membre averti
    Homme Profil pro
    cadre d'éxploitation
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : cadre d'éxploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut
    Merci beaucoup Theze

    votre code marche trés, vous me sauvez

    encore merci

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

Discussions similaires

  1. Format/Masque de saisie: Date, réduit
    Par Falcdyr dans le forum IHM
    Réponses: 19
    Dernier message: 30/04/2008, 15h15
  2. masque de saisie date
    Par halamou dans le forum Forms
    Réponses: 7
    Dernier message: 29/01/2008, 09h57
  3. Réponses: 0
    Dernier message: 28/10/2007, 20h11
  4. [Débutant] =Maintenant() avec un masque de saisie date
    Par 512banque dans le forum Access
    Réponses: 4
    Dernier message: 05/07/2006, 16h38
  5. masque de saisie date du genre Avr 06
    Par fscli dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 16h52

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