chaine de caractère > à 17

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

esftel

XLDnaute Occasionnel
bonjour le formum,

j'ai une liste de 600 adresses dans une collone que je dois intégrer dans un outils dont les chanps adresse accépte 17 caractères maxi.

Et, je cherche à scinder les adresses, si celles ci sont suppérieur à 17 caractères. cependant, je souhaiterais que les mots ne soient pas coupés.

le plus simple c'est de vous montrer un exemple.

Merci de votre aide.

esftel
 

Pièces jointes

Re : chaine de caractère > à 17

Bonsoir Esfel

Ci-joint ton fichier.

Je t'ai créé 5 colonnes qui recherche le espaces dans ton texte initial ( colonnes que tu masquer)

Et les formules dans tes 2 colonnes d'adresse qui récupère la position max de l'espace inférieur ou égal à 17

Si tu as des adresses de plus de 34 caractères, il faut modifier le principe avec le dernier espace inférieur à 34.

Il y a surement plus simple, mais il se fait tard.

Bonnes fêtes
 

Pièces jointes

Re : chaine de caractère > à 17

Bonsoir esftel patte d'ours,

voici une proposition par macro si tu préfères:

Code:
Sub caractere17()
For Each texte In Range([A2], [A2].End(xlDown))
    longu = Len(texte.Value) 'récupère la longueur du texte
    If longu > 17 Then
'si le 18e caractère n'est pas un espace .....
        If Mid(texte.Value, 18, 1) <> " " Then
'.....cherche l'espace précédent pour ne pas couper le texte
            For car = 17 To 1 Step -1
                If texte.Characters(car, 1).Caption = " " Then
'et écrit le résultat souhaité
                    texte.Offset(0, 2).Value = Left(texte.Value, car - 1)
                    texte.Offset(0, 3).Value = Right(texte.Value, longu - car)
                    Exit For
                End If
            Next car
        End If
    End If
Next texte
End Sub

Bonnes fêtes!!!
 
Dernière édition:
Re : chaine de caractère > à 17

Bonsoir tout le monde

Une proposition en formule matricielle, à valider par les touches Ctrl+Shift+Entrer
formule pour la cellule C2 de ton exemple:
Code:
 =SI(NBCAR(A2)>17;STXT(A2;1;MIN(18;MAX(SI(STXT(A2;LIGNE($1:$18);1)=" ";LIGNE($1:$18)))));A2)
et la formule pour la cellule D2 de ton exemple :
Code:
=SUPPRESPACE(REMPLACER(A2;1;NBCAR(E2);""))
ensuite faire un glisser déposer sur les lignes du bas.

Attention, les formules ne prennent pas en compte une chaine dont la longueur est supérieure à 34.

Edit :
Réduction de la formule
Code:
=SI(NBCAR(A2)>17;STXT(A2;1;MAX(SI(STXT(A2;LIGNE($1:$18);1)=" ";LIGNE($1:$18))));A2)
@+Jean-Marie
 

Pièces jointes

Dernière édition:
Re : chaine de caractère > à 17

bonjour a vous tous,

je viens de lire vos réponse et cela à l'aire de fonctinner, je vérifirais un peux plus dès que j'aurais un moment.

Patte d'ours, j'espère que tu as passé une bonne nuit 🙂

je reviens vers vous dès que j'aurais vérifier vos réponse.

un grand merci

A+
 
Re : chaine de caractère > à 17

Re bonjour,

Encore un grand merci pour votre aide et après étude des solutions que vous m'avez donné elles fonctionnent toutes très bien, mais j'ai opté pour la solution de JeanMarie avec formule matricielle.

JeanMarie, je me suis permis de réctifier ta formule :
=SUPPRESPACE(REMPLACER(A2;1;NBCAR(E2);""))
par
=SUBSTITUE(A2;D2;"")

A+ merci à vous 🙂
 
Re : chaine de caractère > à 17

Salut JeanMarie,

J'ai en effet pensé à la problèmatique de l'espace avant, et apparement je n'ai pas d'espace en trop.

En revanche, cette espace suplèmentaire reste avec la formule matricielle.

J'ai donc rajouté un SUPPRESPACE dans ta formule matricielle.

Merci encore.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour