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 :

Controler les entrées utilisateurs dans un Userform [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut Controler les entrées utilisateurs dans un Userform
    Bonjour à tous,
    À la place d'utiliser une InputBox je souhaite utiliser un Userform plus complet et plus souple. Mai comment puis je contrôler les entrées que tape l'utilisateur dans les zones de texte?
    Dans la zone Nom je voudrais que l'utilisateur ne puisse rentrer que des lettres en majuscule
    Dans la zone Prénom je voudrais que l'utilisateur ne puisse rentrer que des lettres
    Dans la zone Pseudo je voudrais que l'utilisateur ne puisse rentrer que des lettres et/ou des chiffres
    Dans la zone Age je voudrais que l'utilisateur ne puisse rentrer que des Chiffres.
    Bien sûr en VBA

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Points : 634
    Points
    634

  3. #3
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Avec mes remerciements .
    Le temps d'étudier tout çà et peut être je reviens vers toi . ou pas ....
    Merci

  4. #4
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    bonjouir
    tu peux le controlzer directement au taper des touches
    exemple utilisation de l'evenement keyPress pour tous et keyUp pour le nom en majuscule ca evite d'aller chercher si la touche maj est active
    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
    'l age rien que des num
    Private Sub age_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0: Exit Sub
    End Sub
    'le nom rien que des lettres
    Private Sub nom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not Chr(KeyAscii) Like "[a-z-A-Z]" Then KeyAscii = 0: Exit Sub
    End Sub
    'le nom toujours en majuscule
    Private Sub nom_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    nom = UCase(nom)
    End Sub
    'le prenom rien que des lettres maj ou min
    Private Sub prenom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) Like "[0-9]" Or Not Chr(KeyAscii) Like "[a-z-A-Z]" Then KeyAscii = 0: Exit Sub
    End Sub
    'le pseudo rien que des lettres ou des num
    Private Sub pseudo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not Chr(KeyAscii) Like "[a-z-A-Z]" Then
    If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0: Exit Sub
    End If
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Bonjour a_diard et PatrickToulon.
    Merci pour vos infos.
    Mais tout de même j'ai du mal pour tout comprendre du premier coup. Enfin cela prends tournure, mais avec quelques défauts:
    - Je suis pas arrivé à forcer les majuscule dans un champ; j' ai préféré passer par l'intermédiaire d'une autre cellule ou j'ai utiliser la fonction "MAJUSCULE" Cela fonctionne.
    - Je n'arrive pas à mettre une valeur par défaut dans un OptionButton Ex: homme ou Femme je voudrais par défaut Homme. Je ne sais pas ou mettre le code du Userform-Initialize!
    - J'ai un soucis avec des OptionButton dans un même GroupName au nombre de 7 choix de catégorie de poids : -60 Kg;60 - 70 Kg;70 - 80 Kg;80 - 90 Kg et + 90 Kg.
    Pour que le choix + 90 Kg fonctionne : il faut d'abord que je valide l'un des premiers choix(qui fonctionnent) avant de valider le dernier choix + 90 Kg.
    Et je voudrais aussi avoir la valeur par défaut de 70 - 80 Kg à l'ouverture du USF dans ces OptionButton


    Merci pour vos réponses.
    Comment fait on pour joindre un bout de code dans les règles de l'art (au bon format)?

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    je ne vais (et ne veux) répondre qu'aux questions posées à l'ouverture de ta discussion (contrôle de saisies dans des textboxes d'un userform) --->>
    regarde ce que fait ceci, par exemple
    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
    Private Sub TextBox1_Change() '--->> ne recevra que des majuscules non accentuées, espaces et/ou tirets (pour les patronymes composés) et apostrophes (hé oui, commme D'HUMIERES, par exemple)
     TextBox1.Text = controle(TextBox1, "*[!A-Z '-]*", "patronyme")
    End Sub
    Private Sub TextBox2_Change() '--->> ne recevra que des lettres (accentuées ou non) , espaces, virgules et tirets (de qui écrire des prénoms, quoi)
     TextBox2.Text = controle(TextBox2, "*[!A-zâàéèîîôù, -]*", "prenom")
    End Sub
    Private Sub TextBox3_Change() '--->> ne recevra que des lettres (accentuées ou non) et des chiffres
     TextBox3.Text = controle(TextBox3, "*[!A-zâàéèîîôù0123456789]*")
    End Sub
    Private Sub TextBox4_Change() '--->> ne recevra que des chiffres
      TextBox4.Text = controle(TextBox4, "*[!0-9]*")
    End Sub
    Private Function controle(T As MSForms.TextBox, flt As String, Optional style As String) As String
      If style = "patronyme" Then T.Text = UCase(T.Text)
      If style = "prenom" Then T.Text = StrConv(T.Text, vbProperCase)
      If T.Text Like flt Then controle = T.Tag: Exit Function
      T.Tag = T.Text: controle = T.Tag
    End Function
    Les commentaires en début de chaque textbox t'indiquent ce qui va être traité et comment il le sera.
    Tu verras à l'essai que la tache de l'utilisateur est simplifiée au-delà de ce que tu demandais, mais également que sont prévus les patronymes composés ainsi que les prénoms multiples et/ou composés.

  7. #7
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Merci pour ta réponses.
    Mais désolé, toutes tes commandes comportent le mot "controle" et me renvoie une erreur, n'y a t il pas une variable à déclarer quelque part?
    Et ce code il me semble avoir compris qu'il faut le mettre dans le code de la TextBox! mais lorsque j'ai plusieurs déclarations à y faire figurer faut il imbriquer les 'Private Sub, End Sub ou faut il les déclarer les unes à la suite des autres?
    Merci !

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    toutes tes commandes comportent le mot "controle" et me renvoie une erreur, n'y a t il pas une variable à déclarer quelque part?
    Non. Aucune variable à déclarer.
    Si le mot controle dans mon code est la cause d'une erreur, il n'y a qu'une explication possible : conflit avec une variable qui, dans ton code, aurait le même nom.
    Change donc le mot "controle" partout dans mes seules lignes de code par un autre mot de ton choix.

  9. #9
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re ok un fonction suisse alors pour le keypress
    Bonne idée la fonction couteau suisse pour tout les textboxs
    du reste on peut toujours le faire dans le keypress!! dans le meme esprit
    code evenement bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub nom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des lettres et forcées en Majuscule (patronime)pas besoins de verouiller la touche maj
    KeyAscii = autorized_char(nom, "[A-Z-]", KeyAscii, True)
    End Sub
    Private Sub prenom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des lettres ou un tiret et en nom propre
    KeyAscii = autorized_char(prenom, "[a-zâàéèîîôù -]", KeyAscii, , vbProperCase)
    End Sub
    Private Sub pseudo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'pseudo que des lettres ou des chiffres
    KeyAscii = autorized_char(pseudo, "[A-Z-a-zâàéèîîôù0123456789]", KeyAscii)
    End Sub
    Private Sub codemdp_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des numero ( code mdp)
    KeyAscii = autorized_char(codemdp, "[0-9]", KeyAscii)
    End Sub
    fonction suisse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Function autorized_char(ctrl, filtre, kAsC, Optional MaJ As Boolean = False, Optional Formate = 0) As Long
    kAsC = IIf(MaJ = True, Asc(ucase(Chr(kAsC))), kAsC)
    If Chr(kAsC) Like filtre Then autorized_char = kAsC Else kAsC = 0
    If Formate <> 0 Then ctrl.Text = StrConv(ctrl.Text, Formate)
    End Function

  10. #10
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Merci pour ta réponse!
    C'est bien beau tous ces codes, il faut avouer que je n'y comprend pas grand chose je suis débutant en VBA aidez moi un peu mieux.
    Soit je ne copie pas le bon code là ou il faut soit il comporte des erreurs dues sans doute à mon code en généra ex: "Sub ou Fonction non définie", soit il n'y a pas d'erreur et il ne se passe rien de mieux dans mon déroulement.
    D'autre part , vous ne répondez pas a toutes mes questions:
    Comment copier un bout de code dans le forum, le simple copier/coller de mon code ne fonctionne pas avec ou sans balise de code.
    Comment déterminer des valeurs par défaut à l'ouverture d'USF dans les OptionButton
    Lorsqu'on rentre des "Private Sub/End Sub dans un champ texte (TextBox) par exemple, faut il les empiler les uns à la suite des autres ou comprendre le tout dans un seul Private Sub / End Sub dudit champ?

  11. #11
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    j'avoue ne pas tres bien te comprendre
    dans l'exemple qui t'a été donné utilisant l'evenement "change" c'est assez explicite vu que le nom utilisé pour les textbox est d'origine
    dans l'exemple que je t'ai donné j'ai mis un nom a chaque textbox relativement explicite
    il est donc facile dans le module userform de repérer quel code evenement va avec quel textbox

    il ne suffit pas de faire un copier coller ,il te faut adapter les noms de tes textboxs

    dans les deux propositions que tu a eu TOUT LE CODE VA DANS LE USERFORM!!!!!!!!
    si tes textboxs ne sont pas dans un userform mais une feuille alors le code va dans le module de la feuille
    je vois vraiment pas ce qui peut y avoir de compliqué
    on t'a maché le travail tu n'a plus qu'a t'en servir

    EDIT:
    Comment copier un bout de code dans le forum, le simple copier/coller de mon code ne fonctionne pas avec ou sans balise de code.
    j'avoue ne pas bien comprendre ce que tu veux la tu parle dequoi???

    Comment déterminer des valeurs par défaut à l'ouverture d'USF dans les OptionButton
    cette question est hors sujet elle necessite sans doute un autre post avec un autre intitulé
    ce post ayant pour sujet le controle des entré utilisateur ce qui n'a rien a voir avec cette question

    Lorsqu'on rentre des "Private Sub/End Sub dans un champ texte (TextBox) par exemple, faut il les empiler les uns à la suite des autres ou comprendre le tout dans un seul Private Sub / End Sub dudit champ?
    non!!!! on imprique pas des sub ca ne se fait pas !!! d'ailleurs VBA ne se fait pas attendre pour te le signaler en execution

  12. #12
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Merci!
    Pour info: j'ai changé les libellés des TextBox TextBox1 s'intitule ChampNom ; TextBox2 : ChampPrenom etc ...,bien sûr j'adapte à chaque fois, çà j'ai bien compris.
    D'autre part, j'ai créer un nouveau module pour intégrer le "Private Function " Authorized_Char() etc...
    Mais lorsque quand je lance le déroulement de mon truc : j'ai "Nom ambigu détecté : ChampNom_KeyPress " bien sur j'avais modifié nom_KeyPress par ChampNom_KeyPress

    Ok j'ai compris pour les Private Sub on les met les uns à la suite des autres.

    Ok j'ai compris aussi que tout le code va dans le code du UserForm et non dans le code des différents TextBox ,OIptionButton ou CheckBoxe inclus dans la UserForm

    Concernant les OptionButton par défaut ok j'ouvrirai une nouvelle discussion bien que je trouve que ce soit un peu lié, non? les OptionButton sont bien des contrôles utilisateurs de UserForm

    La dernière chose est plutôt d'ordre général: si tu me demandes de t'envoyer un bout de mon code dans un message qui t'es destiné, le simple copier/coller ne fonctionne pas, moi quand je vois ton code il semble bien formaté et numéroté!
    Encore merci !!

  13. #13
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut
    regarde comment je fait pour poster du code
    Nom : demo2.gif
Affichages : 545
Taille : 897,1 Ko

    pour le nom ambigue ca veux dire que soit tu a une sub pareil dans un autre module ou 2 fois champnom_keypress dans le userform c'est pas plus compliqué que ca

  14. #14
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Ooooohhh !!! çà marche ! après réflexion et épluchage du code que tu m'as transmis ainsi que les conseils que tu m'as indiques,
    Seule juste un truc: Le champ Prénom, je souhaite qu'il soit traité de la même manière que la fonction "NOMPROPRE" juste la première lettre en majuscule et la suite en minuscule y compris les "-" et les " ' "
    Encore merci !

  15. #15
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    voici un classeur contenant 2 userforms ayant respectivement la methode de unparia et l'autre la mienne
    apres ca je peux plus rien pour toi si ca rentre pas


    Nom : demo2.gif
Affichages : 509
Taille : 279,7 Ko
    Fichiers attachés Fichiers attachés

  16. #16
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Il est plus facile de faire ce que l'on comprends que de recopier bêtement !!!
    Merci pour la leçon ! et l'envoi de code !

  17. #17
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    Seule juste un truc: Le champ Prénom, je souhaite qu'il soit traité de la même manière que la fonction "NOMPROPRE" juste la première lettre en majuscule et la suite en minuscule y compris les "-" et les " ' "
    dans ce cas la c'est pas une fonction nom propre mais une fonction perso les noms propes on un majuscule a chaque mots

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Le champ Prénom, je souhaite qu'il soit traité de la même manière que la fonction "NOMPROPRE" juste la première lettre en majuscule et la suite en minuscule y compris les "-" et les " ' "
    Rien de plus simple avec mon code. On y ajoute simplement un "style" dans la fonction --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Function controle(T As MSForms.TextBox, flt As String, Optional style As String) As String
      If style = "patronyme" Then T.Text = UCase(T.Text)
      If style = "prenom" Then T.Text = StrConv(T.Text, vbProperCase)
      If style = "première majuscule uniquement" Then T.Text = UCase(Left(T.Text, 1)) & LCase(Mid(T.Text, 2))' -->> Style ajouté
      If T.Text Like flt Then controle = T.Tag: Exit Function
      T.Tag = T.Text: controle = T.Tag
    End Function
    Et on s'en sert ainsi (exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox6_Change() '--->> première lettre en majuscule, les autres forcées en minuscule
     TextBox6.Text = controle(TextBox6, "*[!A-zâàéèîîôù, '-]*", "première majuscule uniquement")
    End Sub
    Et si tu commençais à y mettre un peu du tien, maintenant ?
    Bonne chance

  19. #19
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    et dans le meme principe avec keypress
    evenement bouton
    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
    ' version patricktoulon
    'ici dans le motif on accepte quand meme les minuscules de facon a ne pas etre obligé de toucher la touche mag
    'la fonction se charge de mettre la lettre tapée en Majuscule
    Private Sub nom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des lettres et forcées en Majuscule (patronime)pas besoins de verouiller la touche maj
    KeyAscii = autorized_char(nom, "[A-Za-z]", KeyAscii, "MAJUSCULE")
    End Sub
    'ici pareil sauf que la fonction se chargera de mettre uniquement la first letter en mag meme si la touche majuscule est activée
    Private Sub prenom_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des lettres ou un tiret et en nom propre
    KeyAscii = autorized_char(prenom, "[A-zâàéèîîôù, -]", KeyAscii, "only first letter To UpCase")
    End Sub
    'ici on accepte toutes les lettres et chiffres maj ou pas maj'
    Private Sub pseudo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'pseudo que des lettres ou des chiffres
    KeyAscii = autorized_char(pseudo, "[A-Z-a-zâàéèîîôù0123456789]", KeyAscii)
    End Sub
    'ici on accepte que des nombres
    Private Sub codemdp_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'rien que des numero ( code mdp)
    KeyAscii = autorized_char(codemdp, "[0-9]", KeyAscii)
    End Sub
    fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Function autorized_char(ctrl, filtre, KaSc, Optional formate = "normal") As Long
    If Chr(KaSc) Like filtre Then KaSc = KaSc Else KaSc = 0: Exit Function
    If formate = "only first letter To UpCase" Then KaSc = IIf(Len(ctrl.Text) = 0, Asc(UCase(Chr(KaSc))), Asc(LCase(Chr(KaSc))))
    If formate = "MAJUSCULE" Then KaSc = Asc(UCase(Chr(KaSc)))
    'If formate = "trucmuche" Then KaSc = blablabla
    'etc....
    autorized_char = KaSc
    End Function

  20. #20
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    Merci à nouveau,
    Il me semble qu'aujourd hui j'ai fait un grand pas dans les UserForms
    La seconde fois m'a semblée beaucoup plus clair et d'un seul coup ....une lumière !!!!!
    Mais dans ta solution (fichier exemple joint) cela fonction bien le prénom avec la première lettre en majuscule
    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2010, 17h47
  2. Contrôler les entrées utilisateur
    Par dimi2 dans le forum Pascal
    Réponses: 8
    Dernier message: 16/03/2008, 22h50
  3. ou chercher les sorties utilisateurs dans tomcat
    Par gloglo dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/12/2006, 14h28
  4. comment compter les entrées identiques dans une requete?
    Par Chico_Latino dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 18h16
  5. controler les caractères présents dans un JTextField.
    Par heider dans le forum Composants
    Réponses: 5
    Dernier message: 26/12/2005, 12h24

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