Ne pas avoir uniquement la 1ère lettre mots en majuscule (style PascalCase)

Bonjour à tous,

J'utilise la formule ci-dessous pour avoir la 1ère lettre de chaque mot en majuscule et pour supprimer les espaces. Cela afin d'avoir une convention de nommage au style PascalCase (exemple : backup process donnera BackupProcess ou encore user permissions donnera UserPermissions => Majuscule à chaque mot uniquement + Suppression des espaces).

=SUBSTITUE(NOMPROPRE(B2);" ";"")

Je souhaite toujours avoir le format PascalCase mais permettre d'avoir d'autres majuscules dans les mots et non pas uniquement la 1ère lettre de chaque mot en majuscule (exemple : Si j'ai AD user details, je ne souhaite pas avoir AdUserDetails mais ADUser details (AD pour Active Directory) => Majuscule à chaque mot mais pas uniquement si j'ai défini d'autres majuscules ailleurs + Suppression des espaces).

Pouvez-vous svp me dire s'il est possible d'avoir un style PascalCase avec la 1ère lettre de chaque mot en majuscule (mais pas que, pas uniquement si je souhaite ajouter d'autres majuscules dans certains cas) sans les espaces ?

En vous remerciant par avance. Bonne journée.

Bonjour

Avec AD user details en $A$1, une proposition:

=LET(
A;FRACTIONNER.TEXTE(A1;" ");
B;STXT(A;1;1);
JOINDRE.TEXTE("";;SUBSTITUE(A;B;MAJUSCULE(B)))
)

Cordialement

Bonjour, une alternative (toujours par rapport à A1),

=JOINDRE.TEXTE("";VRAI;BYCOL(FRACTIONNER.TEXTE(A1;" "); LAMBDA(c;SI(EXACT(c;MAJUSCULE(c));c;NOMPROPRE(c)))))

Bonjour à tous,

Une version dynamique pour A1 si le mot en majuscule se trouve n'importe où :

=LET(
a;FRACTIONNER.TEXTE(A1;;" ");
b;NOMPROPRE(FRACTIONNER.TEXTE(A1;;" "));
JOINDRE.TEXTE("";;SI(EXACT(GAUCHE(a;1);GAUCHE(b;1))*1=1;a;b)))

Bonjour à tous !

Proposition amendée :
=LET(
t;FRACTIONNER.TEXTE(A1;;" ");
CONCAT(MAJUSCULE(GAUCHE(t))&DROITE(t;NBCAR(t)-1))
)
image

Bonjour,

Je vous remercie tous pour vos propositions. Cela fonctionne très bien. Merci d'avoir pris le temps de m'aider.

Mon problème maintenant, c'est pour vous départager ! Je vous mets tous sur le podium 1ère place !

Merci encore. Bonne journée à vous tous !

Bonjour à tous !

Bien....

Je vous remercie de ce retour.

Hummm… j'ai clairement été lésé dans cette affaire de podium mais c'est pas grave, mon petit cœur en a vu d'autres…

Bonjour à tous !

.......mon petit cœur en a vu d'autres…

Pour réactiver un rythme cardiaque éventuellement défaillant, je vous propose de tester votre proposition avec les valeurs suivantes :

AD user details
ADtU user details
ADtUa user details
ADtUa useru details

Je n'avais pas pris en compte le mix majuscules/minuscules cachées en milieu de mot effectivement… C'est vicieux. Je dois admettre mon incompétence, ma formule ne convient pas.

Je trouvais ma formule étonnamment courte en comparaison des votre, il y avait bien anguille sous roche

Bonjour à tous de nouveau !

.....Je dois admettre mon incompétence.......

Heureusement que non !

J'écris cela moins pour vous être agréable que pour.....me ménager.

Merci encore à tous pour votre aide.

saboh12617 : "Je dois admettre mon incompétence, ma formule ne convient pas."

Si tu es incompétent en formules Excel, qu'est-ce que je suis moi ?

JFL, JB_, Efgé, vos codes fonctionnent tous, je les ai testé avec les valeurs fournies par JFL avec les variations de majuscules dans les mots. Bravo à vous tous ! JFL, tu as proposé le code le plus court. saboh121617, oui tu n'as pas pris en compte le mix majuscules/minuscules mais ça n'est pas grave. Bravo à toi quand même ! Je n'ai pas le 1/4 de ton niveau pour proposer une formule de ce type. C'est du trop haut niveau pour moi.

S'il y en a qui connaissent l'école des fans, c'est 10/10 pour chacun ! Pas de perdant !

Bonjour à tous,

Merci de ton retour Crapule, cela fait plaisir !

Comme je l'ai déjà dit ailleurs, j'aime pas avoir la plus courte

JB_ : "Comme je l'ai déjà dit ailleurs, j'aime pas avoir la plus courte"

J'y avais pensé mais j'ai pas osé. Comment ça "ailleurs" JB_, ça m'intéresse, où ça ailleurs ? Dis-nous.

========
Efgé
========
=LET(
A;FRACTIONNER.TEXTE(A1;" ");
B;STXT(A;1;1);
JOINDRE.TEXTE("";;SUBSTITUE(A;B;MAJUSCULE(B)))
)

=======
JB_
=======
=LET(
a;FRACTIONNER.TEXTE(A1;;" ");
b;NOMPROPRE(FRACTIONNER.TEXTE(A1;;" "));
JOINDRE.TEXTE("";;SI(EXACT(GAUCHE(a;1);GAUCHE(b;1))*1=1;a;b)))

=======
JFL
=======
=LET(
t;FRACTIONNER.TEXTE(A1;;" ");
CONCAT(MAJUSCULE(GAUCHE(t))&DROITE(t;NBCAR(t)-1))
)

JB_ je te confirme que c'est toi qui a la plus grande (formule bien sûr hein).

Bon après-midi à tous.

Désolé, il faut que je garde une part de mystère

Je te donne un indice : Tu peux la raccourcir très facilement au niveau de la 2ème variable mais je pense que j'aurais la plus grande quand même...

Bonjour à tous

Si on joue à la plus courte (ça me plait ;) ) je pique le CONCAT de JFL (je n'y pense jamais... )

=LET(
A;FRACTIONNER.TEXTE(A1;" ");
B;STXT(A;1;1);
CONCAT(SUBSTITUE(A;B;MAJUSCULE(B)))
)

Cordialement

Bonsoir à tous !

=LET(
A;FRACTIONNER.TEXTE(A1;" ");
B;STXT(A;1;1);
CONCAT(SUBSTITUE(A;B;MAJUSCULE(B)))
)

Un petit test avec la valeur "ADtUa useru details" ?

RE à tous,

Version optimisée au max, suivant ma logique de départ :

=LET(
a;FRACTIONNER.TEXTE(A1;;" ");
b;NOMPROPRE(a);
CONCAT("";;SI(EXACT(GAUCHE(a);GAUCHE(b));a;b)))

99 caractères, contre 87 pour JFL

Bonjour à tous

Un petit test avec la valeur "ADtUa useru details" ?

Exact.

=LET(
A;FRACTIONNER.TEXTE(A1;" ");
B;STXT(A;1;1);
CONCAT(SUBSTITUE(A;B;MAJUSCULE(B);1))
)

Cordialement

Bonjour à tous !

@Efgé : Hello !

De l'importance des arguments.....

Rechercher des sujets similaires à "pas uniquement 1ere lettre mots majuscule style pascalcase"