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 effacement caractère dans une textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut Problème effacement caractère dans une textbox
    Bonjour à tous,

    Je souhaite faciliter la saisie d'une date dans une textbox. J'ai donc limité les caractères autorisés (seulement numériques) et j'ai fait en sorte que lorsqu'on arrive aux 3ème et 6ème caractères, le caractère "/" s'affiche automatiquement. J'ai également mis une condition IsDate à la validation de la saisie.

    Mon problème se situe lorsque je veux supprimer des caractères (erreur dans la saisie), lorsque je veux n'effacer que le caractère avant le "/", cela efface les 2 caractères avant le "/". J'ai essayer en pas à pas de trouver d'où venait le problème, je vois bien à quel moment ça ne va pas, mais n'arrive pas à corriger.

    Pouvez-vous m'aider? Ci-dessous le code de la textbox nommée textbox.

    Merci


    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
    Private Sub textbox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
    'exemple pour format xx/xx/xxxx
    textbox.MaxLength = 10
     
    If textbox <> "" Then
        If Not IsDate(textbox.Value) Then
            MsgBox "Veuillez entrer une date valide au format JJ/MM/AAA", vbExclamation, "Format de date incorrecte"
            textbox = ""
            Exit Sub
        End If
    End If
     
    End Sub
     
     
    Private Sub textbox_Change()
     
        Dim Valeur As Byte
     
        Valeur = Len(Me.textbox)
        If Valeur = 2 Or Valeur = 5 Then textbox = textbox & "/"
     
    End Sub
     
     
    Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        Dim Valeur As Byte
     
        ' Si la valeur n'est pas comprise entre 0 et 9
        If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
          MsgBox "Caractère non autorisé"
          KeyAscii = 0 'on annule la pression sur la touche
        End If
     
    End Sub
     
     
    Private Sub textbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        Dim Valeur As Byte
        Dim Temp As String
     
        Valeur = Len(Me.textbox.Value)
     
        If KeyCode = vbKeyBack And Valeur = 6 Then
            Temp = Left(Me.textbox.Value, 4)
            Me.textbox.Value = ""
            Me.textbox.Value = Temp
        ElseIf KeyCode = vbKeyBack And Valeur = 3 Then
            Temp = Left(Me.textbox.Value, 1)
            Me.textbox.Value = ""
            Me.textbox.Value = Temp
        End If
     
    End Sub

  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
    Citation Envoyé par RemyA56 Voir le message
    Je souhaite faciliter la saisie d'une date dans une textbox. J'ai donc limité les caractères autorisés (seulement numériques) et j'ai fait en sorte que lorsqu'on arrive aux 3ème et 6ème caractères, le caractère "/" s'affiche automatiquement. J'ai également mis une condition IsDate à la validation de la saisie.
    A mon avis, tu te compliques bien inutilement la vie.
    Un simple test avec IsDate() suffit.
    Il faudrait vraiment que l'utilisateur soit complètement abruti (excuse pour le terme mais je n'en vois pas d'autre) pour ne pas comprendre le message envoyé et corriger de lui-même.
    Et quand il se sera fait reprendre une ou deux fois, il va rapidement comprendre comment on écrit une date.
    C'est un avis (aussi subjectif que personnel) que j'ai souvent répété sur ce forum : éduquer l'utilisateur est un des meilleurs gages pour éviter les problèmes.

    Plus tu fais quelque chose de complexe, plus il y a de chance que ça coince quelque part.

  3. #3
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut
    J'en conviens, cela dit, au-delà de l'utilisation que j'ai prévu d'en faire (parce que oui, au final, je peux toujours faire sauter une partie du code), j'aimerai bien comprendre pourquoi cela réagit comme ça et ne pas rester sur une impasse.

  4. #4
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut
    Bonjour, toujours personne pour m'aider à comprendre pourquoi le code se comporte comme ça et ainsi m'aider à progresser un peu plus?

    Merci

Discussions similaires

  1. Nombre de caractères dans une textbox
    Par Stefounette dans le forum JavaFX
    Réponses: 10
    Dernier message: 27/04/2010, 11h00
  2. Problème liens cliquables dans une TextBox
    Par Lisandro09 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 12/06/2009, 11h59
  3. Reconnaisance de caractère dans une TextBox avec bibliothèque de mot
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/09/2008, 17h38
  4. Ajouter des caractéres dans une textbox
    Par l3xki dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/02/2008, 14h18
  5. [VB 2005] Enlever certains caractères dans une textbox
    Par BluesMusic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/01/2008, 14h14

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