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 :

Imposer majuscules en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Imposer majuscules en VBA
    Bonjour à tous,

    Voici ma question. Dans un formulaire 2 zones de texte (TxtLib et TxtVil). Je souhaites que le texte soit mis en majuscule impérativement. Si l'utilisateur saisie en minuscules lors de la validation le texte doit être transformé en majuscules. Est-ce possible ? Comment dois-je procéder ?
    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    bonjour,
    regarde du côté de la fonction UCASE() (pour les majuscules) et LCASE() (pour les minuscules)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    bonjour,
    regarde du côté de la fonction UCASE() (pour les majuscules) et LCASE() (pour les minuscules)
    Bonjour,
    Ok je regarde par là.
    Merci pour ta réponse

    J'ai vu, j'ai lu, mais je ne sais pas comment l'appliquer.
    Il y a également une fonction VbProperCase qui permet de transformer la 1ère lettre en majuscule. Mais tout cela je ne sais pas l'encoder. J'ai trouvé des idées, lorsque je les applique, mon application crie de partout.
    De plus, je souhaite que cela soit complétement transparent pour l'utilisateur.
    Il valide, et la convertion se fait.
    Merci pour votre aide

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai trouvé. J'ai tapé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TxtLib_AfterUpdate()
    Me.TxtLib = UCase(TxtLib)
    End Sub
     
    Private Sub TxtVil_AfterUpdate()
    Me.TxtVil = UCase(TxtVil)
    End Sub
    Par contre comment faire pour que seule la première lettre soit en majuscule ?

  5. #5
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    le vbProperCase n'est pas une fonctin, mais une constante qui permet de déterminer la transformation d'une chaine avec la fonctino strConv. on l'utilise comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TxtVil_AfterUpdate()
        Me.TxtVil = strconv(Me.txtVil,vbProperCase)
    End Sub

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par Maxence HUBICHE Voir le message
    le vbProperCase n'est pas une fonctin, mais une constante qui permet de déterminer la transformation d'une chaine avec la fonctino strConv. on l'utilise comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TxtVil_AfterUpdate()
        Me.TxtVil = strconv(Me.txtVil,vbProperCase)
    End Sub
    Bonjour,

    Super ça marche. Vous êtes tous des champions. Par contre, si j'écris plusieurs mots, par exemple (recherche de gaz), chaque mot prend la première lettre en majuscule. Comment résoudre ce problème ?
    Merci par avance

  7. #7
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Avec un test sur l'existence de l'espace ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TxtVil_AfterUpdate()
        Dim lngPos as long
        lngPos=Instr(me.txtvil," ")
        If lngPos <> 0 then
            me.txtVil=strConv(left(me.txtVil,lngPos)) & mid(me.txtVil, lngPos+1)
        Else
            Me.TxtVil = strconv(Me.txtVil,vbProperCase)
        End if
    End Sub

  8. #8
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Si j'ai bien compris ton prôblème,

    La réponse en dans le tytoriel de SilkyRoad
    Utiliser les contrôles dans un usf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub textBox1_keyPress(ByVal keyAscii As MSForms.ReturnInteger)
    keyAscii = Asc(UCase(Chr(keyAscii)))
    End Sub

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par Maxence HUBICHE Voir le message
    Avec un test sur l'existence de l'espace ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TxtVil_AfterUpdate()
        Dim lngPos as long
        lngPos=Instr(me.txtvil," ")
        If lngPos <> 0 then
            me.txtVil=strConv(left(me.txtVil,lngPos)) & mid(me.txtVil, lngPos+1)
        Else
            Me.TxtVil = strconv(Me.txtVil,vbProperCase)
        End if
    End Sub
    J'ai essayé ton code, un message apparaît sur strConv de la 5ème ligne, "Erreur de compilation", "Argument non facultatif".
    Peux-tu éclairer ma lanterne s'il te plait ?

  10. #10
    Membre éprouvé
    Homme Profil pro
    Contrôleur des Systèmes d'Information
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Contrôleur des Systèmes d'Information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    J'ai essayé ton code, un message apparaît sur strConv de la 5ème ligne, "Erreur de compilation", "Argument non facultatif".
    Peux-tu éclairer ma lanterne s'il te plait ?
    Essaie de remplacer la ligne en question par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.txtVil=strConv(left(me.txtVil,lngPos) & mid(me.txtVil, lngPos+1),vbProperCase) 

  11. #11
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par jkodio Voir le message
    Essaie de remplacer la ligne en question par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.txtVil=strConv(left(me.txtVil,lngPos) & mid(me.txtVil, lngPos+1),vbProperCase) 
    Bonjour,

    Je viens d'essayer ton code, il me met toutes les premières lettre de la chaine en majuscules, alors que je ne souhaite que seul le premier mot de la chaine soit en majuscule.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    Bonjour,

    Je viens d'essayer ton code, il me met toutes les premières lettre de la chaine en majuscules, alors que je ne souhaite que seul le premier mot de la chaine soit en majuscule.
    Je n'ai toujours pas trouvre de solution. Je vais chercher un peu plus.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Contrôleur des Systèmes d'Information
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Contrôleur des Systèmes d'Information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Par défaut
    Oups, je crois que j'ai gaffé.
    Il faut plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.txtVil=strConv(left(me.txtVil,lngPos),vbProperCase ) & mid(me.txtVil, lngPos+1)
    Désolé...

  14. #14
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par jkodio Voir le message
    Oups, je crois que j'ai gaffé.
    Il faut plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.txtVil=strConv(left(me.txtVil,lngPos),vbProperCase ) & mid(me.txtVil, lngPos+1)
    Désolé...
    ça marche, mais uniquement pour le premier mot si tout est écrit en majuscule. Exemple (RECHERCHE DE FUITE, devient Recherche DE FUITE) non "Recherche de fuite" comme je le souhaiterai. Si tout est écrit en minuscule, la première lettre de la phrase passe bien en majuscule.
    J'ai regardé si j'avais mal retranscrit tes infos, mais non, tout esr correct.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Contrôleur des Systèmes d'Information
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Contrôleur des Systèmes d'Information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    ça marche, mais uniquement pour le premier mot si tout est écrit en majuscule. Exemple (RECHERCHE DE FUITE, devient Recherche DE FUITE) non "Recherche de fuite" comme je le souhaiterai. Si tout est écrit en minuscule, la première lettre de la phrase passe bien en majuscule.
    J'ai regardé si j'avais mal retranscrit tes infos, mais non, tout esr correct.
    Oui, mais tu n'avais pas dit que tu voulais convertir le reste en minuscule.
    Bon dans ce cas, essaie ceci:
    (une ligne est insérée entre la 2ème et la 3ème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TxtVil_AfterUpdate()
        Dim lngPos as long
        me.txtvil = lcase(me.txtvil)
        lngPos=Instr(me.txtvil," ")
        If lngPos <> 0 then
            me.txtVil=strConv(left(me.txtVil,lngPos),vbProperCase) & mid(me.txtVil, lngPos+1)
        Else
            Me.TxtVil = strconv(Me.txtVil,vbProperCase)
        End if
    End Sub

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour éviter lngPos=Instr(me.txtvil," ")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    me.txtVil=lcase(txtVil)
    me.txtVil=strConv(left(me.txtVil,lngPos),vbProperCase ) & mid(me.txtVil, lngPos+1)

  17. #17
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Pour éviter lngPos=Instr(me.txtvil," ")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    me.txtVil=lcase(txtVil)
    me.txtVil=strConv(left(me.txtVil,lngPos),vbProperCase ) & mid(me.txtVil, lngPos+1)
    Bonjour Ouskel'n'or
    Maintenant ça marche très bien. Je mets mon code pour ceux qui voudrait s'en inspirer.
    Merci à tous pour votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TxtObjet_AfterUpdate()
    Dim LngPos As Long
    Me.TxtObjet = LCase(TxtObjet)
        LngPos = InStr(Me.TxtObjet, " ")
            If LngPos <> 0 Then
            Me.TxtObjet = StrConv(Left(Me.TxtObjet, LngPos), vbProperCase) & Mid(Me.TxtObjet, LngPos + 1)
        Else
            Me.TxtObjet = StrConv(Me.TxtObjet, vbProperCase)
        End If
    End Sub

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

Discussions similaires

  1. [XL-2003] Imposer 1ere lettre majuscule dans cellule via VBA
    Par medino55 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2011, 03h34
  2. [VBA-E] mettre en majuscule une chaine string en vba
    Par ludo02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/03/2007, 23h34
  3. [VBA - E]Prendre en compte les lettres majuscules et minuscules
    Par alex_elder1_1 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/12/2006, 15h52
  4. [VBA Excel] Forcer les majuscules
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/06/2006, 12h12
  5. Réponses: 1
    Dernier message: 27/01/2006, 13h11

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