[Excel] Majuscule sur la première lettre [Résolu/Fermé]

Signaler
-
 Mohammad -
Bonjour,
lorsqu'on insère du texte dans excel, y'a-t-il un moyen pour que la première lettre de chaque cellule soit mise automatiquement en majuscule?
J'ai regardé dans outils/options/orthographe mais n'y ai rien trouvé le permettant. Une astuce peut-être?
D'avance merci pour votre aide!

14 réponses

Il y a plus simple :
=CONCATENER(MAJUSCULE(GAUCHE(D2;1));DROITE(D2;(NBCAR(D2))-1))

En gros, on extrait la première lettre à gauche (GAUCHE()) que l'on passe en majuscule (MAJUSCULE()), puis on extrait la partie droite(DROITE()) après la première lettre (NBCAR(D2))-1), on concatène le tout...
122
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
1
Date d'inscription
mercredi 12 juillet 2017
Statut
Membre
Dernière intervention
12 juillet 2017

Merci,
Cette formule fonctionne très bien si la suite de mots dans la cellule de référence est en minuscules.
Or, dans mon cas, elle était en majuscules.... J'ai donc tenté d'inverser en mettant en minuscules mais je n'y suis pas parvenu.
J'ai donc modifié la formule et maintenant, ça fonctionne.

Donc, si le texte de la cellule d'origine est en majuscules, ma bonne formule est :

=CONCATENER(GAUCHE(B12;1);STXT(MINUSCULE(B12);2;NBCAR(B12)))

En gros, comme Rinos, j'extrais la première lettre : GAUCHE(B12;1), j'extrais et mets toute la suite en minuscules : STXT(MINUSCULE(B12);2;NBCAR(B12)) et comme Rinos, on concatène le tout ! :)

J'espère que cela pourra aider quelqu'un...
merci pour l'aide
Très élégant comme solution, merci.
Merci bcp pour votre infos, je l'utilise tres souvent

Bonjour,

J'arrive bien après la bataille mais il y a une solution beaucoup plus simple qu'une macro pour mettre en majucule la première lettre d'une cellule : la fonction NomPropre.
Cf http://www.info-3000.com/excel/majuscule.php (procédure pour mise en majuscules, puis évocation des fonctions NomPropre et Minuscule, qui reprennent exactement la même procédure).
Bonjour Bridget... Merci beaucoup pour ces explications hyper claires et efficaces, cela est beaucoup plus simple que l'utilisation des macros que j'ai déjà oubliée, faute de pratique !
Il y a tellement de fonctions dans Excel, c'est incroyable! Merci et très bonne journée.
Merci pour cette info que je découvre. Et si je ne veux modifier que la première lettre de chaque mot, pour passer de minuscule en majuscules, sans modifier les autres lettres du mot ? Ceci car par exemple dans une adresse avec boite postale notée "bP 3011", je veux que le b soit mis en majuscule mais conserver le P majuscule, idem dans le cas d'un nom de société de type aGF. Si je fait =NOMPROPRE (A1), je vais obtenir "Bp 3011" et "Agf".
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817 > Noé
une solution par macro évènementielle (à mettre donc derrière la feuille concernée) :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim longueur, separateur, i
Dim macell As Range, mazone As Range
Application.EnableEvents = False
For Each mazone In Target.Areas
    For Each macell In mazone
        longueur = Len(macell): separateur = True
        monprec_estalpha = False
        For i = 1 To longueur
            moncar = Mid(macell, i, 1)
            moncar_estmin = (moncar >= "a" And moncar <= "z")
            moncar_estmaj = (moncar >= "A" And moncar <= "Z")
            moncar_estalpha = moncar_estmin Or moncar_estmaj
    
            If moncar_estalpha Then
                If Not monprec_estalpha Then
                    If moncar_estmin Then
                        macell = Mid(macell, 1, i - 1) & Chr(-32 + Asc(moncar)) & Right$(macell, longueur - i)
                    End If
                    monprec_estalpha = True
                End If
            Else
                monprec_estalpha = False
            End If
        Next
    Range(macell.Address) = macell
    Next
Next
Application.EnableEvents = True
End Sub

cordialement
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817
Bonjour,

réponse un peu tardive : nompropre ne répond absolument pas au problème posé dans le post 1 car il transforme en majuscule la 1ère lettre de chaque mot de la cellule, pas seulement la 1ère lettre de la cellule.

cordialement
Oui mais si le mot est composé et bien la majuscule s'applique sur tous les mots !
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817
Bonsoir,

en fait, il faut mettre le code derrière la feuille dans laquelle tu veux que ça marche.

donc tu te mets sur l'onglet 1,
tu fais ALT + F11 pour accéder à VBA
tu fais un clic droit sur feuil1 dans la fenêtre VBA Projet (en haut à gauche)
dans le menu contextuel qui s'affiche, tu choisis code
enfin, dans la fenêtre de droite qui apparait alors, tu copies le code.

tu retournes dans ton onglet et tu t'amuses pour vérifier que ça marche.

regarde là : http://cjoint.com/?chca6ry3tT
j'ai rajouté une ligne de code pour éviter certains soucis

bon courage et n'hésite pas si tu as des problèmes

A+
Bonsoir,
merci beaucoup de m'avoir accordé de ton temps sur ce problème.
J'ai essayé de faire ce que tu m'as dit. Une fois le code copié dans la fenêtre (Affichage/Code, seule manière que j'ai trouvée pour accéder à la fenêtre code), ensuite j'ai une erreur de validation: Erreur de compilation:
Attendu:)
Il semblerait qu'il faille rajouter un mot clé CALL mais je n'y comprends rien.
Je suis allée voir ton exemple qui fonctionne parfaitement bien, j'ai voulu donc aller voir ton code, que j'ai obtenu mais dès que je veux l'executer dans mon document il me demande de lui donner un nom, puis de le créer, ce qui me donne un nouveau code à inclure dans la fenêtre précédente. Je dois dire que je n'y comprends rien.
Merci d'avoir fait ce que tu as pu pour m'aider, mais je ne suis pas assez calée sur Excel pour y parvenir.
Par contre je me suis créée un souci car à chaque fois que j'ouvre mon document excel, j'ai droit au fameux message m'annonçant qu'une macro est associée à mon document, bla bla bla sur activex, ensuite j'ai le choix entre Désactiver les macros, Activer les macros ou Information. Donc je désactive à chaque fois, mais que puis-je faire pour que ce message n'apparaisse plus? Car je ne trouve aucune macro associée à ce document, donc il doit y en avoir une cachée que je n'arrive pas à supprimer.
Merci encore pour toute ta patience! Et vraiment désolée de ne pas avoir réussi à faire ce que tu m'avais pourtant si bien clairement expliqué.
whahoo! trop beau, merci! c la première fois que le miracle se produit pour moi suite à un gentil coup de main par écrit comme celui-ci!!!
Bon du coup pour les adresses mails, ça le fait pas trop, mais je suppose qu'on peut pas tout avoir...
voilà une macro qui va pouvoir vous aider!
a+


Sub Transforme()

Dim Valeur As String
Dim Plage, Cellule As Range

' Ici spécifier la plage à couvrir !
Set Plage = Range("A1:A700")

For Each Cellule In Plage
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule

End Sub
Merci
Simple efficace
Parfait
Merci, magique
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817
bonsoir,

une petite macro à mettre en embuscade derrière la feuille de calcul dans laquelle tu effectues ta saisie :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value >= "a" And Target.Value <= "z" Then
    Target.Value = Chr(-32 + Asc(Left$(Target.Value, 1))) & Right$(Target.Value, Len(Target.Value) - 1)
End If
End Sub
A+
Bonsoir JvDo,
merci beaucoup pour ta réponse. Mais voilà, le monde des macros m'est complètement inconnu! Créer des petites macros hyperrrrrrr simples style (mettre en gras puis mettre en italique puis refermer tel truc et re-ouvrir tel autre) ça va mais dès que l'on rentre dans les macros complexes, je n'y connais rien.
Pourrais-tu stp me guider pas à pas pour que je puisse rentrer la rédaction de la macro que tu m'as conseillée?
Si cela te prendrait trop de temps, alors je comprendrai.
Merci,
merci, c'est vraiment pratique
où peut -on apprendre (ou télécharger) ces trucs?
merci encore
Merci, ça fonctionne même si parfois la fenêtre d'erreur s'ouvre. je vais en profiter.
Bonjour, j'ai utilisé ce code pour pouvoir mettre la 1ère lettre de mon mot en majuscule et le reste en minuscule :

Set Plage = Range("A2:A338")

For Each Cellule In Plage
Cellule.Value = LCase(Cellule.Value)
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule

End Sub

Cordialement.
Function First_Letter(mRange As Range)
Dim a As Integer
Dim b As String, c As String
If mRange = "" Or IsNull(mRange) Then
First_Letter = ""
Else
a = Len(mRange)
b = UCase(Left(mRange, 1))
If a = 1 Then
c = Right(mRange, a)
Else
c = Right(mRange, a - 1)
End If
First_Letter = b & LCase(c)
End If
End Function
Colle cette fonction dans la fenetre vb et invite le aprés
elle permet de rendre majuscule la 1ere lettre et minuscule le reste
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817
bonsoir,

bien sur que tu vas y arriver!
regarde : http://cjoint.com/?ciazghJuAx, il y a des images.

A+
et bien, je dois admettre que tu es hyper patient et très encourageant!!!
Bon, le truc c'est que je n'avais pas de fenêtre VBA Projet, mais j'ai réussi à la faire apparaitre en faisant Affichage /Explorateur de projet.
Donc ensuite j'ai suivi tes instructions et j'ai obtenue la fenêtre du code, le code y était bien inscrit.
Mais ensuite que dois-je faire? Car si je retourne directement sur ma feuille excel, et que j'essaie d'écrire un truc dans une cellule ma première lettre reste en minuscule, j'en déduis donc que ma feuille n'a pas encore fusionée avec ma macro et qu'il faut que j'enregistre ma macro auparavant mais je ne sais comment faire. J'ai compris maintenant que ça ne se fait pas en cliquant sur l'icone "Executer Sub/User Form" car ensuite on va me demander de créer une nouvelle macro... Vraiment désolée, malgré toutes tes intentions hyper sympas... je n'y arrive pas...
Ca MARCHEUUUUUUUUUUU
Merci beaucoup!
En fait j'avais fait tellement d'essai que je me suis apperçue que y'avait plusieurs onglets "macro" dans mon classeur, donc je suppose qu'il y avait un "conflit" de macros!
Donc finalement, y'avait pas à enregistrer la macro, elle le fait automatiquement!
Merci encore mille fois pour ta patience!!!!

Puis-je te poser une dernière question? J'ai fait l'essai de supprimer la macro en allant dans Outils/Macro/Macros. J'ai ensuite refermé mon dossier excel en le sauvegardant. Je voulais voir si en supprimant la macro, je n'aurais plus de message en ouvrant mon dossier excel me disant qu'une macro y est attachée, etc... Mais là par contre ça fonctionne pas. Car même la macro supprimée, je continue à avoir ce message où il faut toujours répondre "désactiver la macro" puisqu'elle n'existe plus. Cela signifie t-il qu'une fois une macro créée, même si on la supprime, on aura toujours ce message de macro en ouvrant le dossier excel?

Merci encore beaucoup pour ton aide!!!!!!!!!!!!!!!!!!
A +
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
817
bonsoir,

bonne nouvelle donc!

pour la macro qui fait de la résistance, ça n'est pas normal.

personnellement, pour les macros incluses dans des modules, je fais clic droit sur le module, supprimer et je dis non à l'export du module.
Pour celles attachées à une feuille, que ce soit feuil1 ou thisworkbook, j'affiche le code (clic droit sur feuil1 ou thisworkbook puis code) et je l'efface comme si j'étais dans un éditeur de texte.

avec ça, il n'y a plus de sollicitations intempestives à l'ouverture du classeur autour de macros à activer ou pas.

bon courage

PS : n'oublie pas d'enregistrer ton classeur après l'effacement des macros!!!
Bonjour,

Merciiiiiiiiiiiiiiiiiiiiii pour toute ton aide!

J'ai fait l'essai de recréer un nouveau document Excel, d'y mettre la macro, de retourner travailler dans ma feuille Excel et de ne n'enregistrer mon document Excel qu'une fois après avoir effacé le code de la macro dans la fenêtre VBA Projet. A la nouvelle ouverture du document Excel, effectivement, je n'avais plus de message quant à la résistance d'une macro!

Que le monde des macros est compliqué quand on n'a pas du tout l'âme informatique!

Merci encore mille fois pour ta patience et toutes tes explications!


Bonne Journée!
BB_
Messages postés
3
Date d'inscription
jeudi 10 juillet 2008
Statut
Membre
Dernière intervention
10 juillet 2008

Bonjour

Je suis un nouveau sur ce forum et je doit dire que celui-ci est vraiment supper pour les trucs et astuces.

A ce sujet j'ai une demande complémentaire a faire sur ce topic.

Voila la macro ci-dessus me convient parfaitement dans l'esprit mais je voudrait l'appliquer sur une zone nommée.

J'ai bien testé différentes solutions mais je n'arrive pas a extraire les bornes de la zone nommée pour les intégrer dans la variable "Set plage"

Par exemple :

j'ai une zone nommée "ref_1" qui couvre C13 a c70 et je souhaite (automatisation sur de nombreuses zone nommées avec des paramètres du type "ref_"n ) faire appel a cette zonne nommée pour remplir les adresses a prendre en compte.

en fait un peu avoir la syntaxe ci dessous

Set Plage = Range(ref_1) au lieu d'avoir les adressses en dur.

Si quelqu'un a une solution par avance merci
Messages postés
3
Date d'inscription
jeudi 10 juillet 2008
Statut
Membre
Dernière intervention
10 juillet 2008

Bon j'ai trouvé

Voici un exemple de code (avec passage en format Texte des cellules

Private Sub CommandButton_maj_Click()

For Rang = 1 To 29
Application.Goto Reference:="ref_" & Rang
Set Plage = Range(Selection.Address)
For Each Cellule In Plage
Cellule.Value = UCase(Cellule.Value)
Cellule.NumberFormat = "@"
Next Cellule
Next Rang

End Sub


A+
Hello, pour compléter la formule de Rinos.


Si vous voulez mettre juste la première lettre en majuscule :
=CONCATENER(MAJUSCULE(GAUCHE(D2;1));DROITE(D2;(NBCAR(D2))-1))

Si vous avez le nom et le prénom dans la même celulle séparés par un espace (" ") et que vous voulez mettre une majuscule à la première lettre du nom et du prénom il vous faut cette formule là (nom + prénom en D2) :
=CONCATENER(MAJUSCULE(GAUCHE(D2;1));DROITE(GAUCHE(D2;CHERCHE(" ";D2;1)-1);NBCAR(GAUCHE(D2;CHERCHE(" ";D2;1)-1))-1);" ";CONCATENER(MAJUSCULE(GAUCHE(DROITE(D2;NBCAR(D2)-CHERCHE(" ";D2;1));1));DROITE(DROITE(D2;NBCAR(D2)-CHERCHE(" ";D2;1));(NBCAR(DROITE(D2;NBCAR(D2)-CHERCHE(" ";D2;1))))-1)))

Si le séparateur n'est pas un espace, vous devez changer dans la formule le " " par votre séparateur.
Bonjour

Moi je prefere comme ca HI

Sub TestMaj()
For L = 2 To Range("A" & Rows.Count).End(xlUp).Row
Nom = Application.Trim(Range("A" & L).Value)
A = Len(Nom)
If A > 0 Then
Range("A" & L).Value = UCase(Left(Nom, 1)) & LCase(Right(Nom, A - 1))
End If
Next
End Sub

A+

Maurice
Messages postés
726
Date d'inscription
vendredi 24 décembre 2004
Statut
Membre
Dernière intervention
20 août 2010
1 101
Salut
bah ça parait bete mais non, il existe des fonctions mais qui mettront une majuscule à CHAQUE mot, ou tout en capitales.
En fait, c'est excel et pas word, ce n'est pas un traitement de texte.

Joel
Merci pour ton message. Effectivement je sais que Excel est un tableur et n'est pas sensé servir de traitement de texte. Mais souvent, travailler même en texte dans un tableau excel est beaucoup plus agréable que de travailler sur word avec des tableaux.
Merci pour ta réponse

Pour une seule majuscule au 1er mot :
=MAJUSCULE(cellule concernée)

Pour une majuscule à chaque début de mot :
=NOMPROPRE(cellule concernée)

Puis, faire copier et collage spécial Valeur (pour retirer la formule et n'avoir que du texte).
Messages postés
2
Date d'inscription
mardi 11 décembre 2012
Statut
Membre
Dernière intervention
11 décembre 2012

Bonjour de Nouvelle Calédonie.
En fait la fonction MAJUSCULE(cellule concernée) transforme le mot entier en majuscules.
La fonction NOMPROPRE(Cellule concernée) mettra une majuscule à chaque mot contenu dans cette cellule.
Pour obtenir la première lettre en majuscule (en début d'un mot ou d'un groupe de mots contenu dans une cellule, une petite gymnastique que je vous transmets:,
=MAJUSCULE(GAUCHE(A1;1))&MINUSCULE(DROITE(A1;NBCAR(A1)-1))
La cellule A1 contient le mot ou le groupe de mot à modifier.
La formule ci-dessus est à coller dans une cellule quelconque.
Puis comme le dit Christelle, "Puis, faire copier et collage spécial Valeur (pour retirer la formule et n'avoir que du texte"
Cordialement