Une Majuscule en début de cellule pas plus.

megansport

XLDnaute Junior
Bonjour au forum

J'aurais besoin de vos service pour travailler sur une base de 25000 ligne.
Il me faudrait tout simplement mettre une majuscule au début du mot.

Par exemple: phare droit devient Phare droit dans la cellule

J'ai chercher sur le forum mais je n'ai pas trouver de solution me concernant

Merci de votre aide
 

anna2054

XLDnaute Occasionnel
eh ben en principe, comme la macro s'appelle MajusculePremiereLettre(),
ça doit mettre en majuscule que la première lettre, non ? et c'est bien c'que
tu demandes : tu as écrit : « je voudrais que rien ne change, à l'exception de la
première lettre qui doit changer en majuscule » ; donc j'vois pas pourquoi
la macro de Jam ne ferait pas déjà, sans aucun changement, c'que tu veux.


soan
La macro fait bien le job, sauf qu'elle a changé NC en Nc (C>c n'est pas première lettre).
 

soan

XLDnaute Barbatruc
Inactif
@anna2054

ton fichier en retour ; fais Ctrl e ➯ travail effectué

fais Alt F11 pour voir le code VBA :

VB:
Option Explicit

Sub Essai()
  Dim Tbl, n&: Application.ScreenUpdating = 0
  n = Cells(Rows.Count, 1).End(3).Row
  If n = 1 Then Exit Sub
  Dim chn$, k&, i&: n = n - 1: Tbl = [A2].Resize(n)
  For i = 1 To n
    chn = Tbl(i, 1): k = Len(chn)
    If k > 0 Then Tbl(i, 1) = _
      UCase$(Left$(chn, 1)) & Right$(chn, k - 1)
  Next i
  [A2].Resize(n) = Tbl
End Sub
edit : fichier amélioré dans mon post #47.

soan
 

Pièces jointes

  • Forum2311.xlsm
    16 KB · Affichages: 5
Dernière édition:

anna2054

XLDnaute Occasionnel
@anna2054

eh ben voilà ! c'est bien plus facile avec le fichier ! :)

c'est par là qu't'aurais dû commencer dès l'début ! :p

------------------------------------------------------------

ton fichier en retour ; fais Ctrl e ➯ travail effectué

fais Alt F11 pour voir le code VBA

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. ;)


soan
Merci beaucoup Soan. Je sais comment m'en servir maintenant.
Cela marche impeccablement :)
 

fanch55

XLDnaute Barbatruc
Bonjour le fil,
Mince, j'avais pas posté ma réponse depuis 13:00 !!!! (resté en aperçu) o_O😖
le post #4 amélioré :
VB:
Option Explicit
Sub MajusculePremiereLettre()
Dim Elem As Range, W As Variant
    Application.EnableEvents = False
        For Each Elem In Selection.Cells
            W = Split(Elem)
            W(0) = StrConv(W(0), vbProperCase)
            Elem = Join(W)
        Next
    Application.EnableEvents = False
    MsgBox ("Fin de traitement")
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bonjour fanch55
wohw!!! split,strconv,join
a ben tu la veux ta majuscule toi 🤪

sinon MID en écriture c'est bien aussi

VB:
Option Explicit
Sub MajusculePremiereLettre()
Dim Elem As Range, t$
    Application.EnableEvents = False
        For Each Elem In Selection.Cells
           t = Elem.Text: Mid(t, 1, 1) = UCase(Mid(t, 1, 1)): Elem = t
        Next
    Application.EnableEvents = False
    MsgBox ("Fin de traitement")
End Sub
 

fanch55

XLDnaute Barbatruc
Ah ben du coup j'avais pas vu pour le NC, peut-être avec la correction bestiale ci-dessous :
VB:
]Option Explicit
Sub MajusculePremiereLettre()
Dim Elem As Range, W As Variant
    Application.EnableEvents = False
        For Each Elem In Selection.Cells
            If Elem <> "NC" then
                W = Split(Elem)
                W(0) = StrConv(W(0), vbProperCase)
                Elem = Join(W)
            End if
        Next
    Application.EnableEvents = False
    MsgBox ("Fin de traitement")
End Sub
@patricktoulon
Salut Pat, c'est vrai, j'ai fait une fixette sur mot avec majuscule en début, le mid est bien plus approprié (Anna ne parle par ailleurs que du premier caractère, j'ai tout zappé ).
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
il était une fois un mid(x,1,1) se promenant dans un module (qui faisait abstraction des considérations comme "NC") puisque touchant le seul et uniquement le premier caractère d'une chaîne se rendit fort utile l'or de l’application d'une majuscule a toute une colonne
si discret et si petit et ne remuant pas un pet tout seul s'ennuyait
allait- il encore être invisible .......

suite au prochain épisode ......... 🤪 🥳🤔

bon d'accords je sors
pardonnez moi (atteins de confinite aigue)
 

job75

XLDnaute Barbatruc
Bonjour anna2054, le fil,

Bah il est évident qu'il faut enlever le LCase dans la boucle :
VB:
For i = 1 To UBound(myArray, 1)
    myArray(i, 1) = UCase(Left(myArray(i, 1), 1)) & _
        Right(myArray(i, 1), Len(myArray(i, 1)) - 1)
Next
qu'on peut écrire tout simplement :
VB:
For i = 1 To UBound(myArray, 1)
    myArray(i, 1) = UCase(Left(myArray(i, 1), 1)) & Mid(myArray(i, 1), 2)
Next
A+
 

Discussions similaires

Réponses
12
Affichages
323

Statistiques des forums

Discussions
314 017
Messages
2 104 578
Membres
109 081
dernier inscrit
Vio21