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 :

Majuscule automatique dans un formulaire


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Majuscule automatique dans un formulaire
    Bonjour,

    J'ai crée une base de données, je voudrai savoir de quelle manière on peut mettre automatiquement un champ majuscule.
    En plus claire, je saisie dans le champs "Nom", dans un formulaire, en minuscule et il se tranforme automatiquement en majuscule. Je saisie aussi le "prénom" en minuscule et la première lettre se transforme en majuscule.

    Je ne suis pas fort en VBA, j'ai essayé d'utiliser la création d'assistant des macros en indiquant le champs que je voudrai tranformer en majuscule "Nom" et dans l'expréssion <Majuscule([Nom])>. Je ne sais comment relié cette macro au champs voulu dans le formulaire qui "Nom". et je n'ai pas pu créer pour le prénom la première lettre en majuscule.

    Merci de votre aide. J'ai essayé beacoup de truc sans sccès.

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour,

    Dans les propriétés du Champ (en mode création de la table) tu trouveras Masque de Saisie.

    Tu cliques dans la propriété et tu fais F1, tu auras tout le paramétrage à appliquer

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,
    Pour passer le nom en majuscule, ta macro semble être correcte, il te faut juste la mettre sur l'événement "sur perte de focus" de ton contrôle nom.

    pour ce qui est d'une majuscule au prénom, jusqu'à Access 2000, il n'y a pas de fonction qui te le permette, tu dois l'écrire en VBA, dans les versions suivantes d'Access, cette fonction a peut être été ajoutée, mais je ne le sais pas
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Egalement une possibilité directement en code VBA...

    Pour passer ton champ [Nom] en Majuscule, sur événement 'Après MAJ'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampNom_AfterUpdate()
    Me.ChampNom = UCase$(Nz(ChampNom))
    End Sub
    Pour passer la première lettre de ton [Prénom] en majuscule, sur événement 'Après MAJ'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPrenom_AfterUpdate()
    Me.ChampPrenom = UCase$(Mid$(Nz(ChampPrenom), 1, 1)) & LCase$(Mid$(Nz(ChampPrenom), 2, Len(Nz(ChampPrenom))))
    End Sub
    L'avantage de cette méthode, c'est qu'ici le nom et le prénom seront également sauvegardé tel quel dans ta table.........à la différence d'appliquer un masque de saisie qui lui ne fais qu'afficher le texte dans le format que tu souhaite....
    Par contre concernant un prénom composé (Jean-Pierre) avec cette méthode seule la première lettre du prénom sera mise en majuscule (Jean-pierre)....

    Bonne continuation...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci àtous pour cette effort et ces idées.
    Finalement j'ai essyé touts les solutions proposées. J'ai trouvé que le code proposé ci dessous fonctionne très bien. La solution de masque de saisie et aussi intéressente.

    Il reste une seule chose si c'est possible, comment mettre le second mot d'un nom ou prénom composé exp "jean pierre" doit s'écrire "Jean Pierre".

    Merci pour votre suggétation.




    Citation Envoyé par FreeAccess
    Bonjour,

    Egalement une possibilité directement en code VBA...

    Pour passer ton champ [Nom] en Majuscule, sur événement 'Après MAJ'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampNom_AfterUpdate()
    Me.ChampNom = UCase$(Nz(ChampNom))
    End Sub
    Pour passer la première lettre de ton [Prénom] en majuscule, sur événement 'Après MAJ'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPrenom_AfterUpdate()
    Me.ChampPrenom = UCase$(Mid$(Nz(ChampPrenom), 1, 1)) & LCase$(Mid$(Nz(ChampPrenom), 2, Len(Nz(ChampPrenom))))
    End Sub
    L'avantage de cette méthode, c'est qu'ici le nom et le prénom seront également sauvegardé tel quel dans ta table.........à la différence d'appliquer un masque de saisie qui lui ne fais qu'afficher le texte dans le format que tu souhaite....
    Par contre concernant un prénom composé (Jean-Pierre) avec cette méthode seule la première lettre du prénom sera mise en majuscule (Jean-pierre)....

    Bonne continuation...

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Il faut que tu créés une fonction, soit dans ton formulaire, mais cette fonction ne pourra être appelée que depuis ce formulaire soit dans un module et tu pourras l'appeler de n'importe quel formulaire
    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
    Function NomPropre(Entree) As String
    If Not IsNull(Entree) Then
    For x = 1 To Len(Entree)
        If x = 1 Then
            NomPropre = UCase(Left(Entree, 1))
        Else
            If Mid(Entree, x, 1) = "-" Or Mid(Entree, x, 1) = "_" Or Mid(Entree, x, 1) = " " Then
                Maj = 1
                NomPropre = NomPropre & "-"
            Else
                If Maj = 1 Then
                    NomPropre = NomPropre & UCase(Mid(Entree, x, 1))
                    Maj = 0
                Else
                    NomPropre = NomPropre & LCase(Mid(Entree, x, 1))
                End If
            End If
        End If
    Next x
    End If
    End Function
    et tu l'appelles comme Ucase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPreNom_AfterUpdate() 
    Me.ChampPreNom = NomPropre(Nz(ChampNom)) 
    End Sub
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci Jean Paul pour ta proposition,
    J'essaye de l'activité mais ça ne marche pas.
    Je l'ai enregister en tant que module sous le nom UCase. Ensuite, j'ai crée une macro avec "Executer Cose" qui excute ce code UCase.
    J'ai choisit dans le contrôle formulaire dans propriété - événement - Après MAJ j'ai choisi cette macro.

    Je ne sais pas ou ça n'a pas marché. Est ce que dans le code du module on change "NomPropre" ou je le laisse comme il est? Je n'i pas compris le dernier code correspand à quoi et je l'enregistre ou?

    Merci pour ton aide.


    Citation Envoyé par jean-paul lepetit
    Il faut que tu créés une fonction, soit dans ton formulaire, mais cette fonction ne pourra être appelée que depuis ce formulaire soit dans un module et tu pourras l'appeler de n'importe quel formulaire
    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
    Function NomPropre(Entree) As String
    If Not IsNull(Entree) Then
    For x = 1 To Len(Entree)
        If x = 1 Then
            NomPropre = UCase(Left(Entree, 1))
        Else
            If Mid(Entree, x, 1) = "-" Or Mid(Entree, x, 1) = "_" Or Mid(Entree, x, 1) = " " Then
                Maj = 1
                NomPropre = NomPropre & "-"
            Else
                If Maj = 1 Then
                    NomPropre = NomPropre & UCase(Mid(Entree, x, 1))
                    Maj = 0
                Else
                    NomPropre = NomPropre & LCase(Mid(Entree, x, 1))
                End If
            End If
        End If
    Next x
    End If
    End Function
    et tu l'appelles comme Ucase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPreNom_AfterUpdate() 
    Me.ChampPreNom = NomPropre(Nz(ChampNom)) 
    End Sub

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    ...Je l'ai enregister en tant que module sous le nom UCase
    Evite de donner à un module ou tout autre élément, un mot clef d'Access.... renomme ton module par exemple = modPrénomMajuscule

    ...j'ai crée une macro avec "Executer Cose" qui excute ce code UCase
    Il faut appeler le nom de la fonction...ici, NomPropre
    Ensuite, évite les macros....fais tout directement sous code VBA...

    Tu clique sur ton champ devant contenir le prénom...
    Dans l'onglet 'Evénement' en face de la ligne "Après MAJ" tu clique sur les trois petits points [...]
    Tu choisie 'Générateur de code' et tu te retrouve directement sous l'éditeur de code, avec une ligne qui ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPreNom_AfterUpdate() 
     
    End Sub
    Il ne reste plus qu'à insérer le code donné entre Private et End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ChampPreNom_AfterUpdate() 
    Me.ChampPreNom = NomPropre(Nz(ChampNom)) 
    End Sub
    Voila c'est tout simple...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  9. #9
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    il faut renommer ton module Ucase, car c'est un nom réservé.
    Appelles ce module "Fonctions" plutôt.

    le dernier code, tu le mets sur ton champ ou tu saisis le prénom, sur l'événement après mise à jour.

    tu cliques sur les ... en bout de ligne qui te propose générateur d'expression, générateur de macro ou générateur de code.
    tu choisis générateur de code qui t'ouvre l'éditeur VBA.
    et tu mets ce bout de code (sauf "Private Sub ChampPreNom_AfterUpdate() et End Sub " puisque tu vas déjà avoir quelque chose du même genre
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  10. #10
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    @ jean-paul lepetit

    Il serait bon de rajouter en début de fonction la définition des deux variables...
    Function NomPropre(Entree) As String
    Dim X As Integer
    Dim Maj As Integer
    If Not IsNull(Entree) Then
    For X = 1 To Len(Entree)
    If X = 1 Then
    ......
    ......
    End Sub
    Bonne continuation...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  11. #11
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Citation Envoyé par FreeAccess
    @ jean-paul lepetit

    Il serait bon de rajouter en début de fonction la définition des deux variables...

    Bonne continuation...
    Effectivement....
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci à tous pour vos recommadation et votre patience. Finalment j'ai réussi l'opération après que mes cheveux sont devenu tous blanc .

    Je commance à saisir un peu le VBA mais je ne pourrai jamais le comprendre.

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

Discussions similaires

  1. Automatiquement dans un formulaire
    Par XCCUBE dans le forum IHM
    Réponses: 2
    Dernier message: 02/02/2007, 21h05
  2. Réponses: 1
    Dernier message: 25/10/2006, 18h06
  3. calculs automatiques dans un formulaire dynamique
    Par renaud26 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 13/07/2006, 18h13
  4. Réponses: 7
    Dernier message: 11/07/2006, 17h34
  5. Affichage automatique dans un formulaire
    Par Caroclic dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2005, 16h35

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