Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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
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)
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…