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

IHM Discussion :

Forcer la casse d'un champ [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut Forcer la casse d'un champ
    bonjour à tous !

    Je voudrais obliger un champ à posséder une casse prédéfinie (pas seulement afficher); le champs nom et prénom.

    Dans un formulaire sur l'évènement sortie du champ nom j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Nom_candidat_Exit(Cancel As Integer)
    Me.Nom_candidat = UCase(Me.Nom_candidat)
    End Sub
    Ce qui marche très bien

    Sur le champ prénom ça se complique. En effet, j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Prénom_candidat_Exit(Cancel As Integer)
    Me!Prénom_candidat.Value = Format(Left(Me!Prénom_candidat.Value, 1), ">") & Format(Right(Me!Prénom_candidat.Value, Len(Me!Prénom_candidat.Value) - 1), "<")
    End Sub
    Ca marche très bien pour les prénom simples, mais plus pour les prénoms composés.

    jean devient Jean
    jean-marie devient Jean-marie

    Y a t il un code qui permettrait de mettre la première lettre de la seconde partie (après le tiret) en majuscule ?

    merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Bonjour,

    Intéresse-toi à la fonction "Split", qui te permet de disposer de tous les morceaux de texte séparés par des "-" et applique le code que tu indiques à chaque morceau et ensuite, tu les recolles.


    Autre solution : après avoir "capitalisé" la première lettre, tu cherches la position d'un "-" éventuel et tu "capitalises la position suivante.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? instr(1,"jean-claude","-")
    renvoie 5

    Tu peux ensuite faire encore un tour avec comme point de départ la position du 1er "-" + 2 pour traiter l'éventuel cas "anne-marie-françoise"

  3. #3
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    la fonction split me semble adaptée en effet. Cependant je ne sais pas comment l'utiliser. J'ai vu les variables à mettre et quoi mettre, mais je ne sais pas où les mettre dans la fonction ni comment regrouper après :s.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Voici un exemple possible avec la fonction Split.

    Le code suivant est à mettre dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Function MajPrenom(strPrenom As String) As String
        ' déclaration
        Dim strTab() As String
     
        ' Eclatage
        strTab = Split(strPrenom, "-")
     
        ' regroupement
        MajPrenom = StrConv(strTab(0), vbProperCase) & "-" & StrConv(strTab(1), vbProperCase)
     
    End Function
    Ensuite dans ta zone de texte, en reprenant ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Prénom_candidat_Exit(Cancel As Integer)
         Me!Prénom_candidat.Value = MajPrenom(me!Prénom_candidat.Value)
    End Sub

    jean-pierre devient Jean-Pierre

    Attention ce code est valable uniquement si tu as un - de séparation.

    Philippe

  5. #5
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    Merci à toi pour ta réponse !

    J'ai donc bien enregistré mon module, cependant à l’exécution du code il me mets "variable ou procédure attendue et non un module" sur le

    du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Prénom_candidat.Value = MajPrenom(Me!Prénom_candidat.Value)
    Une idée du pourquoi du comment ?

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    @ Philippe


    @sardaucar : c'est que tu n'as pas fait exactement ce que Philippe écrit !

    Revoie si tu as bien logé dans un module le code de la fonction (MajPrenom sans accent !)

  7. #7
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    j'ai un Module qui s'appelle MajPrenom sans accent en effet, il apparait dans mon explorateur de projet dans le sous dossier "module".

    J'avoue avancer à taton, n'ayant jamais eu à faire aux modules avant, je dois paraitre bien bête.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Renomme le module, il ne doit pas avoir le même nom que la fonction.

    Philippe

  9. #9
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    On avance !

    Effectivement c'était tout bêtement ça....

    Pour ne l'appliquer que si le prénom est composé je peux mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if If Me!Prénom_candidat.Value = "-" Then
     Me!Prénom_candidat.Value = MajPrenom(Me!Prénom_candidat.Value)
    else
    Me!Prénom_candidat.Value = Format(Left(Me!Prénom_candidat.Value, 1), ">") & Format(Right(Me!Prénom_candidat.Value, Len(Me!Prénom_candidat.Value) - 1), "<")
    ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Fais le test avec la fonction Instr.

    Philippe

  11. #11
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    Ça marche impeccablement !

    Pour ceux que ça intéresse, le code final donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Prénom_candidat_Exit(Cancel As Integer)
     
     
    If InStr(Me!Prénom_candidat.Value, "-") > 0 Then
     
         Me!Prénom_candidat.Value = MajPrenom(Me!Prénom_candidat.Value)
     
    Else
     
    Me!Prénom_candidat.Value = Format(Left(Me!Prénom_candidat.Value, 1), ">") & Format(Right(Me!Prénom_candidat.Value, Len(Me!Prénom_candidat.Value) - 1), "<")
     
    End If
     
    End Sub
    Merci beaucoup pour vos réponses !

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Profite pleinement de la syntaxe proposée par Philippe :

    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Else
     
    Me!Prénom_candidat.Value = Format(Left(Me!Prénom_candidat.Value, 1), ">") & Format(Right(Me!Prénom_candidat.Value, Len(Me!Prénom_candidat.Value) - 1), "<")
    écris plutôt, (bien plus élégant),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Else
    Me!Prénom_candidat.Value= StrConv(Me!Prénom_candidat.Value, vbProperCase)

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

Discussions similaires

  1. [C# 2.0] Forcer la validation d'un champ
    Par oodini dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/07/2006, 18h47
  2. Forcer la taille d'un champ en HTML
    Par Rei Angelus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/03/2006, 16h28
  3. forcer l'écriture d'un champ de formulaire
    Par goma771 dans le forum Langage
    Réponses: 7
    Dernier message: 21/02/2006, 18h32
  4. Réponses: 2
    Dernier message: 17/10/2005, 10h29
  5. forcer le typer d'un champ
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 22/06/2005, 09h35

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