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

Microsoft 365 Ajouter un espace

moanin

XLDnaute Impliqué
Bonsoir à tous

Est-il possible avec une formule de séparer les mots avec un espace à l'endroit où il y a une seconde majuscule ?

Exemple :

ChickasawsChicachas

>Chickasaws Chicachas

(Le C majuscule aprés ws)

DunnezaTsattine

>Dunneza Tsattine

(Le T majuscule aprés za)

Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Moanin,
En attendant une formule plus "futé", voici celle ci :
VB:
=STXT(A1;1;MIN(SI(ESTERREUR(TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)));"";TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)))))&" "&
STXT(A1;1+MIN(SI(ESTERREUR(TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)));"";TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100))));100)
A valider par Maj+Ctrl+Entrée car formule matricielle.
 

Pièces jointes

  • Maj.xlsx
    8.5 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Ma PJ marche t-elle ?
De mémoire, à vérifier, Office 365 est directement en matriciel, donc le Maj+Ctrl+Entrée est inutile, il suffit de valider par "entrée". A tester.
Cela semble confirmé :
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous

Une autre formule ?
VB:
=GAUCHE(A1;1+EQUIV(1;SI(CODE(STXT(A1;1+LIGNE(INDIRECT("2:"&NBCAR(A1)-1));1))<90;1;"");0)) & " " & STXT(A1;2+EQUIV(1;SI(CODE(STXT(A1;1+LIGNE(INDIRECT("2:"&NBCAR(A1)-1));1))<90;1;"");0);99)
 

Pièces jointes

  • moanin- split 2eme majuscule- v1.xlsx
    10.3 KB · Affichages: 2

moanin

XLDnaute Impliqué
Si ça fonctionne en copiant la formule il fallait juste mettre = devant qui n'y était pas…
Maintenant : comment fait-on quand on veut créer une cellule matricielle ?
Il doit y avoir devant et derrière un signe spécial, non ?
Des accolades ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
[edit] Bonsoir Mapomme.
Dans votre PJ feuil2 il manque la moitié de la formule, vous avez :
VB:
=STXT(A1;1+MIN(SI(ESTERREUR(TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)));"";TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100))));100)
au lieu de
Code:
=STXT(A1;1;MIN(SI(ESTERREUR(TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)));"";TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)))))&" "&
STXT(A1;1+MIN(SI(ESTERREUR(TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100)));"";TROUVE(CAR(LIGNE(INDIRECT("65:90")));STXT(A1;2;100))));100)

Par contre il ne détecte que la seconde majuscule. Comme l'ex donné en post #1.
Il faut traiter toutes les majuscules ? Si oui, alors je ne connais que le VBA, voir PJ avec la fonction perso :
Code:
Function Maj(C$)
    Dim i%, S$
    For i = 1 To Len(C)
        If Asc(Mid(C, i, 1)) >= 65 And Asc(Mid(C, i, 1)) <= 90 Then
            S = S & " " & Mid(C, i, 1)
        Else
            S = S & Mid(C, i, 1)
        End If
    Next i
    Maj = S
End Function
 

Pièces jointes

  • Maj (1).xlsm
    18.6 KB · Affichages: 0

moanin

XLDnaute Impliqué
Pareil : pas possible de lire la feuille avec macro : un message me dit "impossible avec cette version d'Excel"
 

Pièces jointes

  • 6ABC5157-84E8-4ADF-B26F-D584720740EF.png
    862.1 KB · Affichages: 13
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…