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

Excel Discussion :

Userform - Format textbox 0000-00 [XL-2007]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Employé
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Userform - Format textbox 0000-00
    Bonjour,

    Malgré mes recherches sur le forum, je n'ai pas trouvé (ou compris peut-être), solution à mon problème, aussi me voici.
    Je dispose d'un userform dans lequel je nécessite le renseignement d'un numéro à un format bien spécial du type : 1111-11, soit 4 chiffres, le caractère "-", puis 2 chiffres, et le tout collé.
    Ce que je voudrais, c'est mettre en place une vérification sur le format saisi dans la textbox pour m'assurer de ne pas nous retrouver avec des informations erronées : Si le format est respecté, alors c'est bon, sinon, le contenu de la textbox est effacé et un message d'alerte apparait à coté.

    J'ai donc ma textbox se nommant Numero et un label d'alerte se nommant Erreur_Numero

    Voilà ce que j'ai mis comme vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Numero_AfterUpdate()
    If Numero.Value = Format(Numero.Value, "0000-00") Then
    Erreur_Numero.Visible = False
    Else
    Erreur_Numero.Visible = True
    Numero = ""
    End If
    End Sub
    Concrètement, ça ne fonctionne pas, et cela provient sans aucun doute du format que je dois mal renseigner.
    Sauriez-vous quel format je dois mettre ?

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il doit y avoir une solution plus performante, mais dans votre cas, j'aurais utilisé la solution suivante avec deux textbox et une variable public concaténant les deux textbox.


    Le code dans le userform :


    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
     
    Private Sub BoutonValider_Click()
     
        If Len(TextBoxNumero1) < 4 Or Len(TextBoxNumero2) < 2 Then
           MsgBox "Le format du numéro doit être 0000-00 !", vbCritical
           Exit Sub
        End If
     
       NumeroEnEntier = TextBoxNumero1 & "-" & TextBoxNumero2
     
       MsgBox NumeroEnEntier
     
       Unload UserForm1
     
    End Sub
     
    Private Sub TextBoxNumero1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
     
    Private Sub TextBoxNumero2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    TextBoxNumero1 est limité à 4 caractères dans les propriétés et TextboxNumero2 limité à 2.

    Voir le fichier joint.

    Cordialement.
    Dernière modification par Invité ; 30/03/2015 à 17h25.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Employé
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour et merci pour votre réponse,

    La solution du découpage de la saisie est en effet une solution que j'ai précédemment utilisée dans un autre formulaire, mais je voudrais savoir s'il existait une solution plus directe et "élégante" pour effectuer ce genre de mise en forme et de vérification.

    Mais si ma demande n'est pas réalisable, je me tournerai en effet vers votre proposition de formatage.

    Cordialement.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, @Tetaye : on se fout de l'élégance, il faut de l'efficacité pour ne pas engendrer une usine à gaz ( ... à gags )
    à voir et assimiler : Obliger une saisie numérique dans une TextBox

  5. #5
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Points : 82
    Points
    82
    Par défaut
    Sinon avec l'aide de kiki29 et le code ci dessous ca devrait le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox1_Change()
     
    If Len(TextBox1) = 6 Then
        TextBox1.Value = Format(TextBox1.Value, "0000-00")
    End If
     
    End Sub
    Et en mettant dans les propriétés : maxlength = 6.

    Et le tour et joué.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Employé
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour, et merci pour vos réponses.

    Finalement, voilà le code avec lequel je pense réussir à faire ce que je recherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Numero_Afterupdate()
    If Len(Numero) = 8 And Numero.Value Like "####[-]###" Then
        Erreur_Numero.Visible = False
        Else
        Erreur_Numero.Visible = True
    End If
    End Sub

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

Discussions similaires

  1. [XL-2003] userform format datepicker
    Par jbelleng dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/09/2011, 10h57
  2. Plantage excel lié à userform et textbox
    Par lemomow dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/11/2010, 17h02
  3. [XL-2007] format textbox et cellule
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2010, 09h21
  4. aide format textbox supérieur à 24 heures
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/02/2009, 00h34
  5. [VBA-E] UserForm avec textbox "Dynamique"
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 00h29

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