J'ai un problème pour manipuler un texte sur Excel

kingofnothing

XLDnaute Nouveau
Bonjour,

J'aurai besoin de votre aide svp, mon problème sur Excel est que j'ai 2 textes, le premier sur la cellule A1 et le deuxième sur la cellule A2, le premier texte sur A1 dépasse 30 caractère, et je voudrai garder seulement 30 caractère ou moins, ce qui a était enlevé du A1 je voudrai le mettre sur la cellule A2.

La complication que je trouve c'est que quand je prend tout ce qui dépasse 30 caractère sur le texte sur A1, je me trouve parfois avec des mots qui sont incomplet à la fin, exemple :

"Bonjour, je vous souhaite le bienvenu chez nous"

Si j'enlève tout ce qui se trouve après le 30ème caractère je me trouve avec la phrase ci-dessous :

"Bonjour, je vous souhaite le b"

le mot bienvenu à été tronqué, il reste que la lettre "B", donc l'idée est que je puisse avoir la phrase qui s'arrête au dernier espace et dont le nombre de caractère <= 30, et le reste je le met au début du texte de la cellule A2

ça doit être ainsi : "Bonjour, je vous souhaite le " et la cellule A2 commence par "bienvenu chez nous etc..."

J'espère que j'étais assez claire pour expliquer ma problématique.

Merci pour votre aide.
 

job75

XLDnaute Barbatruc
Re : J'ai un problème pour manipuler un texte sur Excel

Bonjour à tous,

Une solution par macros (Alt+F11), assez classique :

Code:
Sub Scinder()
Dim t, i&, x$, p%
With Feuil1.[A1].CurrentRegion.Resize(, 2)
  t = .Value 'matrice, plus rapide
  For i = 2 To UBound(t)
    x = t(i, 1)
    If Len(x) > 30 Then
      p = InStrRev(Left(x, 31), " ")
      If p = 0 Then p = 1 'sécurité
      t(i, 1) = Left(x, p - 1)
      t(i, 2) = Trim(Mid(x, p) & " " & t(i, 2))
    End If
  Next
  .Value = t 'restitution
  .Columns.AutoFit 'ajustement de la largeur
End With
End Sub

Sub Rétablir()
Feuil2.[A:B].Copy Feuil1.[A1]
End Sub
Les macros sont affectées aux 2 boutons.

Fichier joint.

Bonne soirée.
 

Pièces jointes

  • Adresses(1).xlsm
    48.5 KB · Affichages: 35
Dernière édition:

job75

XLDnaute Barbatruc
Re : J'ai un problème pour manipuler un texte sur Excel

Bonjour le fil, le forum,

Si l'on ne veut pas un espace entre 2 chiffres concaténés (lignes 197 et 198) :

Code:
Sub Scinder()
Dim t, i&, x$, p%, test As Boolean
With Feuil1.[A1].CurrentRegion.Resize(, 2)
  t = .Value 'matrice, plus rapide
  For i = 2 To UBound(t)
    x = t(i, 1)
    If Len(x) > 30 Then
      p = InStrRev(Left(x, 31), " ")
      If p = 0 Then p = 1 'sécurité
      t(i, 1) = Left(x, p - 1)
      test = IsNumeric(Right(x, 1) & Left(t(i, 2), 1))
      t(i, 2) = Trim(Mid(x, p) & IIf(test, "", " ") & t(i, 2))
    End If
  Next
  .Value = t 'restitution
  .Columns.AutoFit 'ajustement de la largeur
End With
End Sub
Fichier (2).

Bonne journée.
 

Pièces jointes

  • Adresses(2).xlsm
    48.9 KB · Affichages: 34

Discussions similaires

Réponses
5
Affichages
311
Réponses
3
Affichages
303

Statistiques des forums

Discussions
314 662
Messages
2 111 649
Membres
111 246
dernier inscrit
Jeanluis87