Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

mitou

XLDnaute Nouveau
A l'aide,
J'ai une chaine de caractères (150 et plus) que je souhaite répartir en X colonnes de 30 caractères maxi mais je ne souhaite pas que le dernier mot soit coupé.
ex : Dans le cadre de la réalisation du nouveau télésiège débrayable 6 places , il est nécessaire de créer un nouveau poste de transformation.
Si j'applique la fonction STXT, j'obtiens "Dans le cadre de la réalisati" dans la première colonne alors que je préfèrerais "Dans le cadre de la" et ainsi de suite
Merci de me répondre
 

ROGER2327

XLDnaute Barbatruc
Re : Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

Bonjour mitou
Un essai :
VB:
Sub Par30()
Dim s$, n%, oCel As Range, x$, sp
  With Selection 'ou toute autre plage qu'on veut traiter.
     For Each oCel In .Cells
      n = 0
      s = CStr(oCel.Value)
      Do
        n = n + 1
        sp = Split(Trim(StrReverse(Left$(CStr(s), 30))) & " ", , 2)
        x = Trim(StrReverse(sp(1 + (sp(1) = ""))))
        oCel.Offset(0, n).Value = x
        s = Trim(Replace(s, x, "", 1, 1))
      Loop Until s = ""
    Next
  End With
End Sub
À placer dans un module standard quelconque. La procédure opère sur la feuille active.
Mode d'emploi
: Sélectionner la (ou les) cellule(s) à traiter et exécuter la procédure.​
ROGER2327
#5033


Mardi 10 Pédale 138 (Nativité de Saint Tancrède, jeune homme, SQ)
14 Ventôse An CCXIX
2011-W09-5T15:03:50Z
 

Tibo

XLDnaute Barbatruc
Re : Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

Bonjour,

Une tentative avec formule nommée et formule matricielle

Voir le fichier joint


Le tout, sous réserve d'avoir bien compris le problème.

@+
 

Pièces jointes

  • mitou.zip
    6.4 KB · Affichages: 71

job75

XLDnaute Barbatruc
Re : Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

Bonjour mitou, salut Roger, Tibo :)

Il me semble que le problème est le même que celui traité à la fin de ce fil :

https://www.excel-downloads.com/thr...ue-avant-le-xeme-caractere-dune-suite.108359/

J'y avais commis le fichier joint avec cette fonction macro :

Code:
Function Ventile$(texte$, N%, rang%)
Dim i%, deb%, fin%
texte = Application.Trim(texte) & " "
For i = 1 To rang
  deb = fin + 1
  fin = InStrRev(Left(texte, deb + N), " ")
Next
Ventile = Trim(Mid(texte, deb, fin - deb + 1))
End Function
A+
 

Pièces jointes

  • Ventile(2).xls
    37.5 KB · Affichages: 137
  • Ventile(2).xls
    37.5 KB · Affichages: 131
  • Ventile(2).xls
    37.5 KB · Affichages: 134

CISCO

XLDnaute Barbatruc
Re : Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

Bonjour à tous, bonjour Roger2327, Tibo et Job75

Même remarque que job75 : Mitou, pourquoi n'utilises tu pas, ou n'adpates tu pas les solutions proposées sur l'autre fil ?

@ plus
 

job75

XLDnaute Barbatruc
Re : Diviser une chaine de caracteres en colonnes sans coupure du dernier mot

Re,

Je dépose quand même le fichier (3) avec la phrase proposée...

Edit : salut aussi CISCO :)

A+
 

Pièces jointes

  • Ventile(3).xls
    41.5 KB · Affichages: 133
  • Ventile(3).xls
    41.5 KB · Affichages: 135
  • Ventile(3).xls
    41.5 KB · Affichages: 147

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 939
Membres
104 703
dernier inscrit
romla937