Création
d'entreprise
Posez votre question Signaler

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

BB - Dernière réponse le 20 avril 2012 à 20:07
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!
Lire la suite 

[Excel] Majuscule sur la première lettre »

32 réponses
Réponse
+33
moins plus
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...
Twarn - 28 déc. 2011 à 15:16
Ou plus simplement faire : =NOMPROPRE()

A1 --> maison
B1 --> =NOMPROPRE(A1) affichera alors Maison
storm54 - 15 mars 2012 à 15:04
Bonjour

Encore plus simple dans excel 2007 :
1 - clique sur une cellule vide à coté du mot à transformer
2 - Onglet Formules -> Menu "Texte" -> fonction "nompropre"
3- enfin tu cliques sur la cellule du nom à transformer et tu valides
ton mot a sa première lettre en majuscule.

tu peux recopier la formule si tu es dans un tableau.

Puis, si tu veux remplacer les anciens noms (tout en minuscule) par les nouveaux (1re lettre en maj.) :
- "copier" la colonne des nouveaux mots
- puis "collage spécial / valeurs"

Bonne journée
groick - 20 avril 2012 à 20:06
Champion : bravo : quel gain d etemps !
Ajouter un commentaire
Réponse
+11
moins plus
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).
JvDo- 20 janv. 2010 à 09:26
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
JvDo- 20 janv. 2010 à 07:57
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
groick - 20 avril 2012 à 20:07
Oui mais si le mot est composé et bien la majuscule s'applique sur tous les mots !
Ajouter un commentaire
Réponse
+1
moins plus
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+
BB - 6 févr. 2006 à 19:12
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,
xhitina - 3 juil. 2007 à 10:14
merci, c'est vraiment pratique
où peut -on apprendre (ou télécharger) ces trucs?
merci encore
Ajouter un commentaire
Réponse
+1
moins plus
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+
BB - 7 févr. 2006 à 23:49
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é.
Noisette - 5 août 2008 à 18:59
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...
Ajouter un commentaire
Réponse
+1
moins plus
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
Fred - 12 nov. 2008 à 13:43
Merci
Simple efficace
Parfait
logdard - 1 juin 2011 à 14:27
Merci, magique
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir,

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

A+
BB - 8 févr. 2006 à 01:06
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...
BB - 8 févr. 2006 à 01:20
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 +
Ajouter un commentaire
Réponse
+0
moins plus
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!!!
BB - 8 févr. 2006 à 13:11
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_
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
-2
moins plus
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
BB - 6 févr. 2006 à 19:14
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
ChristelleL - 10 nov. 2011 à 15:46
Pour une seule majuscule au 1er mot :
=MAJUSCULE(cellule concernée)

Pour une majuscule à chaque début de mot :
=NOMPROPRE(cellule concernée)
ChristelleL - 10 nov. 2011 à 15:46
Puis, faire copier et collage spécial Valeur (pour retirer la formule et n'avoir que du texte).
Ajouter un commentaire
Ce document intitulé « [Excel] Majuscule sur la première lettre » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?