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

XL 2021 traitement de texte

chingilou

XLDnaute Junior
bonsoir tout le monde
je voudrais si possible par formule au mieux ou par vba au pire epurer une rangée de moins de 200 lignes de textes en retirant les espaces superflues au début à la fin et au mileu du texte et aussi (c la mon probleme que je ne sais même pas comment refléchir a la solution) de mettre le texte en nompropre (majuscule de la 1er lettre ) si seulement le mot (le texte d'une cellule contient plus d'un mot ) contient plus de 3 lettres)
merci
 
Solution
Bonne nuit les noctambules ! bonne nuit @chingilou
Avec EXCEL 2021

en retirant les espaces superflues au début à la fin et au mileu du texte
Ça se fait avec la fonction SUPPRESPACE(" mon texte b ")


mettre le texte en nompropre (majuscule de la 1er lettre ) si seulement le mot (le texte d'une cellule contient plus d'un mot ) contient plus de 3 lettres)
Cette formule fait le boulot :
VB:
=JOINDRE.TEXTE(" ";VRAI;LET(Chaîne;" "&SUPPRESPACE(B4);Nb;NBCAR(Chaîne)-NBCAR(SUBSTITUE(Chaîne;" ";""));Marquage;SUBSTITUE(SUBSTITUE(Chaîne;" ";"¯";LIGNE(DECALER(Feuil1!$A$1;0;0;Nb;1)));"...

AtTheOne

XLDnaute Accro
Supporter XLD
Bonne nuit les noctambules ! bonne nuit @chingilou
Avec EXCEL 2021

en retirant les espaces superflues au début à la fin et au mileu du texte
Ça se fait avec la fonction SUPPRESPACE(" mon texte b ")


mettre le texte en nompropre (majuscule de la 1er lettre ) si seulement le mot (le texte d'une cellule contient plus d'un mot ) contient plus de 3 lettres)
Cette formule fait le boulot :
VB:
=JOINDRE.TEXTE(" ";VRAI;LET(Chaîne;" "&SUPPRESPACE(B4);Nb;NBCAR(Chaîne)-NBCAR(SUBSTITUE(Chaîne;" ";""));Marquage;SUBSTITUE(SUBSTITUE(Chaîne;" ";"¯";LIGNE(DECALER(Feuil1!$A$1;0;0;Nb;1)));" ";"¯";LIGNE(DECALER(Feuil1!$A$1;0;0;Nb;1)));Liste;GAUCHE(STXT(Marquage;TROUVE("¯";Marquage)+1;NBCAR(Chaîne));TROUVE("¯";STXT(Marquage;TROUVE("¯";Marquage)+1;NBCAR(Chaîne))&"¯")-1);SI(NBCAR(Liste)>3;NOMPROPRE(Liste);Liste)))

Voir l'exemple en pièce jointe
 

Pièces jointes

  • Exemple.xlsx
    11.6 KB · Affichages: 3

chingilou

XLDnaute Junior
une cellule peut contenir un texte à plusieurs lignes j'importe ces textes pour les traiter et ca serai bien d'automatiser le traitement
c'est vrai que je dois donner un fichier exemple désolé mapomme désole

merci pour la formule attheone parfaite
 

mapomme

XLDnaute Barbatruc
Re,

Avant de me coucher, une formule assez courte qui doit faire le travail (et qui était prête )
Avec l'exemple de @AtTheOne :
VB:
=LET(tablo;FRACTIONNER.TEXTE([@[Texte Brut]];" ");SIERREUR(JOINDRE.TEXTE(" ";VRAI;SI(NBCAR(tablo)>3;NOMPROPRE(tablo);tablo));""))

Allez bonne nuit à tous.
 

Pièces jointes

  • chingilou- formater texte- v1.xlsx
    11.4 KB · Affichages: 7

chingilou

XLDnaute Junior
re-MERCI encore
j'utilisais moi ca
VB:
=SUPPRESPACE(NOMPROPRE(SUBSTITUE(SUBSTITUE(EPURAGE(B10);CAR(10)&CAR(13);" "); CAR(160);" ")))
pour les lignes vides que j'avais remarqués mais ca me donnais pas le résultat voulu
 

AtTheOne

XLDnaute Accro
Supporter XLD
L'inconvénient de la fonction EPURAGE (que j'avais pensé à utiliser) c'est qu'elle supprime carrément tous les caractères de contrôle donc on n'a plus de séparateur entre le dernier mot de la ligne n et le premier mot de la ligne non vide qui suit ...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…