chaine de caractère > à 17

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

  • 17CARRACTERES.xls
    20 KB · Affichages: 61
  • 17CARRACTERES.xls
    20 KB · Affichages: 63
  • 17CARRACTERES.xls
    20 KB · Affichages: 68

patte d'ours

XLDnaute Occasionnel
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

  • 17carracteres.xls
    20 KB · Affichages: 64
  • 17carracteres.xls
    20 KB · Affichages: 58
  • 17carracteres.xls
    20 KB · Affichages: 60

skoobi

XLDnaute Barbatruc
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:

JeanMarie

XLDnaute Barbatruc
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

  • 17CARRACTERES.zip
    9.5 KB · Affichages: 40
Dernière édition:

patte d'ours

XLDnaute Occasionnel
Re : chaine de caractère > à 17

Et ben décidemment, ça ne s'arrange pas.

Bon cette fois, j'espère que ça va être la bonne

Allez, bonne nuit à tous
 

Pièces jointes

  • 17carracteres.xls
    33.5 KB · Affichages: 63
  • 17carracteres.xls
    33.5 KB · Affichages: 63
  • 17carracteres.xls
    33.5 KB · Affichages: 70

esftel

XLDnaute Occasionnel
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+
 

esftel

XLDnaute Occasionnel
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 :)
 

esftel

XLDnaute Occasionnel
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 835
Membres
103 972
dernier inscrit
steeter