Autres Mettre en majuscule la première lettre de chaque chaîne, sauf…

coline741

XLDnaute Junior
Bonsoir à Chacune & à Chacun.

Dans les exemples suivants j'aimerais que les lettres qui suivent un caractère non alphabétiqe restent en minuscule.​
La macro jointe au fichier d'exemple, concoctée il y a au moins deux décennies, m'a bien servie pour le français mais avec l'anglais… Aussi puis-je humblement demander aux Héros du VBA, aux Chantres de la macro-commande de (m'aider à) résoudre le problème.

donnée originale​
traitement avec la macro xl4 (c'est caca)​
résultat attendu​
I'm not so sureI'M Not So SureI'm Not So Sure
This guy's in love with youThis Guy'S In Love With YouThis Guy's In Love With You

D'avance Merci
 

Pièces jointes

  • Majuscule.xls
    37 KB · Affichages: 11

Jacky67

XLDnaute Barbatruc
Bonsoir à Chacune & à Chacun.

Dans les exemples suivants j'aimerais que les lettres qui suivent un caractère non alphabétiqe restent en minuscule.​
La macro jointe au fichier d'exemple, concoctée il y a au moins deux décennies, m'a bien servie pour le français mais avec l'anglais… Aussi puis-je humblement demander aux Héros du VBA, aux Chantres de la macro-commande de (m'aider à) résoudre le problème.​
donnée originale​
traitement avec la macro xl4 (c'est caca)​
résultat attendu​
I'm not so sureI'M Not So SureI'm Not So Sure
This guy's in love with youThis Guy'S In Love With YouThis Guy's In Love With You

D'avance Merci
Bonsoir,
en G4 pour le traitement des apostrophes
Code:
=SUBSTITUE(SUBSTITUE(NOMPROPRE(SUBSTITUE(D4;"'";"azerty"));"azerty";"'");"Azerty";"'")
 

Pièces jointes

  • Majuscule.xls
    53.5 KB · Affichages: 8

chris

XLDnaute Barbatruc
RE

En mettant la liste source sous forme de tableau structuré

Tu peux changer la dernière ligne du code en
ListObjects(1).DataBodyRange = Application.WorksheetFunction.Transpose(Textes1)
si tu veux changer directement la source
 

Pièces jointes

  • Majuscule.xlsm
    26.7 KB · Affichages: 7

coline741

XLDnaute Junior
Merci Jackes,

Cette imbrication de fonctions répond bien à l'attente…mais Je traite plusieurs centaines de lignes quotidiennement, J'aurais préféré une macro.

Encore merci, en tout cas
Hé Jackes

Grâce à ton idée, j'ai complété la macro comme ceci…et ça fonctionne. J'aimerais bien savoir ce que ça donne en VBA. Je vais changer d'ordi et me devoir me retrouver avec xls 2020. Il n'est pas sûr que les macros traditionnelles fonctionnent encore.

Merci, Man

Majuscule​
=SELECTION()​
=LIGNES(SELECTION())​
=POUR.CELLULE("cellulact";;FAUX)​
=FORMULE(SUBSTITUE(SUBSTITUE(NOMPROPRE(SUBSTITUE(cellulact;"'";"azerty"));"azerty";"'");"Azerty";"'"))​
=SELECTIONNER(DECALER(CELLULE.ACTIVE();1;0))​
=SUIVANT()​
=RETOUR()​
 

coline741

XLDnaute Junior
RE

En mettant la liste source sous forme de tableau structuré

Tu peux changer la dernière ligne du code en
ListObjects(1).DataBodyRange = Application.WorksheetFunction.Transpose(Textes1)
si tu veux changer directement la source
RE

En mettant la liste source sous forme de tableau structuré

Tu peux changer la dernière ligne du code en
ListObjects(1).DataBodyRange = Application.WorksheetFunction.Transpose(Textes1)
si tu veux changer directement la source
Merci mais la macro ne fonctionne pas sur le document joint
 

patricktoulon

XLDnaute Barbatruc
bonsoir
une petite fonction perso VBA utilisable en formule
VB:
Function properX(valeur As String)
Dim T, I&
T = Split(Replace(Replace(valeur, "'", " ' "), "-", " - "), " ")
For I = 1 To UBound(T)
If Not " '- " Like "*" & T(I - 1) & "*" Then T(I) = Application.Proper(T(I))
Next
properX = Replace(Replace(Join(T), " ' ", "'"), " - ", "-")
End Function

la formule de la premiere cellule
=properx(D4)
à étendre à souhait
;)
 

job75

XLDnaute Barbatruc
Bonsoir à tous,

Quelle idée de vouloir utiliser des macros Excel 4.0, obsolètes depuis 25 ans ?

Et je ne comprend pas pourquoi il faut obtenir des résultats non cohérents dans ces 2 cas :

- Rhythm-a-ning

- Take The A-Train

A+
 

chris

XLDnaute Barbatruc
RE
Merci mais la macro ne fonctionne pas sur le document joint
J'ai juste ajouté un bouton pour que tu puisses constater que cela fonctionne sur le ficher que j'ai joint où, comme je l'ai précisé, il faut mettre la liste sous forme de tableau structuré : existent depuis 18 ans...
 

Pièces jointes

  • Majuscule2b.xlsm
    25.2 KB · Affichages: 8

coline741

XLDnaute Junior
Bonsoir à tous,

Quelle idée de vouloir utiliser des macros Excel 4.0, obsolètes depuis 25 ans ?

Et je ne comprend pas pourquoi il faut obtenir des résultats non cohérents dans ces 2 cas :

- Rhythm-a-ning

- Take The A-Train

A+
Parceque j'utilise Excel depuis 40 ans.
Bonsoir à tous,

Quelle idée de vouloir utiliser des macros Excel 4.0, obsolètes depuis 25 ans ?

Et je ne comprend pas pourquoi il faut obtenir des résultats non cohérents dans ces 2 cas :

- Rhythm-a-ning

- Take The A-Train

A+
bonsoir
une petite fonction perso VBA utilisable en formule
VB:
Function properX(valeur As String)
Dim T, I&
T = Split(Replace(Replace(valeur, "'", " ' "), "-", " - "), " ")
For I = 1 To UBound(T)
If Not " '- " Like "*" & T(I - 1) & "*" Then T(I) = Application.Proper(T(I))
Next
properX = Replace(Replace(Join(T), " ' ", "'"), " - ", "-")
End Function

la formule de la premiere cellule
=properx(D4)
à étendre à souhait
;)
Merci pour cette fonction qui fonctionne à souhait. Je vais m'en inspirer pour remplacer ma vieille macro
 

patricktoulon

XLDnaute Barbatruc
bonjour
tu peux passer par worksheetfunction à la place de application si tu veux
VB:
Function properX(valeur As String)
Dim T, I&
T = Split(Replace(Replace(valeur, "'", " ' "), "-", " - "), " ")
For I = 1 To UBound(T)
If Not " '- " Like "*" & T(I - 1) & "*" Then T(I) = WorksheetFunction.Proper(T(I))
Next
properX = Replace(Replace(Join(T), " ' ", "'"), " - ", "-")
End Function
ou bien encore par evaluate
VB:
Function properX(valeur As String)
Dim T, I&
T = Split(Replace(Replace(valeur, "'", " ' "), "-", " - "), " ")
For I = 1 To UBound(T)
If Not " '- " Like "*" & T(I - 1) & "*" Then T(I) = Evaluate("=PROPER(""" & T(I) & """)")
Next
properX = Replace(Replace(Join(T), " ' ", "'"), " - ", "-")
End Function
 

Statistiques des forums

Discussions
312 111
Messages
2 085 403
Membres
102 883
dernier inscrit
jameseyz