partager un texte dans des cellules

Ilino

XLDnaute Barbatruc
Bonsoir Forum
Je souhaite élaborer un code qui revoie le reste du texte d’une cellule a l’autre
Exemple dans la feuille 1 Je saisi un texte dans une cellule A1 :
« Salut MAITRE, je cherche à créer une Macro qui renvoie le texte d’une cellule à l’autre. »
Dans la feuille2 je souhaite partage le texte vers ces deux cellules X15 et A16
X15-AG15 (cellule fusionnée) et le reste du texte A16-R16 (cellule fusionnés)
A+
 

Pièces jointes

  • ILINO PARTAGE DU TEXTE ENTRE CELLULE.xlsm
    8.6 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re : partager un texte dans des cellules

Bonsoir Ilino,

Voici la macro :

Code:
Sub PartageTexte()
Dim source$, dest1 As Range, dest2 As Range, h#, s, i%, x%
'---données---
source = Application.Trim(Feuil1.[A1].Text)
If source = "" Then Exit Sub
Set dest1 = Feuil2.[X15:AG15]
Set dest2 = Feuil2.[A16]
'---préparation---
dest1.UnMerge 'défusion
dest1.HorizontalAlignment = xlCenterAcrossSelection
dest1.WrapText = True 'retour à la ligne
dest1.Rows.AutoFit 'ajustement automatique
h = dest1.RowHeight 'hauteur de ligne initiale
s = Split(source) 'matrice des mots
'---remplissage de dest1---
For i = 1 To UBound(s)
  x = Len(s(0)) 'mémorisation
  s(0) = s(0) & " " & s(i)
  dest1(1) = s(0)
  dest1.Rows.AutoFit
  If dest1.RowHeight > h Then Exit For
Next
If i > UBound(s) Then x = Len(source)
dest1(1) = Left(source, x)
dest1.RowHeight = h
dest1.Merge 'refusion
dest1.HorizontalAlignment = xlGeneral
'---remplissage de dest2---
dest2 = Mid(source, x + 2)
End Sub
Edit : ajouté If i > UBound(s) Then...

Bonne nuit et A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : partager un texte dans des cellules

Bonjour Ilino,

On peut vouloir ajuster le nombre de cellules fusionnées de la 2ème plage dest2 :

Code:
Sub PartageTexte1()
Dim source$, dest1 As Range, dest2 As Range, h#, s, i%, x%
'---données---
source = Application.Trim(Feuil1.[A1].Text)
If source = "" Then Exit Sub
Set dest1 = Feuil2.[X15:AG15]
Set dest2 = Feuil2.[A16]
'---préparation de dest1---
Application.ScreenUpdating = False
dest1.UnMerge 'défusion
dest1.HorizontalAlignment = xlCenterAcrossSelection
dest1.WrapText = True 'retour à la ligne
dest1.Rows.AutoFit 'ajustement automatique
h = dest1.RowHeight 'hauteur de ligne initiale
s = Split(source) 'matrice des mots
'---remplissage de dest1---
For i = 1 To UBound(s)
  x = Len(s(0)) 'mémorisation
  s(0) = s(0) & " " & s(i)
  dest1(1) = s(0)
  dest1.Rows.AutoFit
  If dest1.RowHeight > h Then Exit For
Next
If i > UBound(s) Then x = Len(source)
dest1(1) = Left(source, x)
dest1.RowHeight = h
dest1.Merge 'refusion
dest1.HorizontalAlignment = xlGeneral
'---préparation de dest2---
dest2 = ""
dest2.UnMerge 'défusion
dest2.WrapText = True
dest2.Rows.AutoFit
h = dest2.RowHeight
'---remplissage et ajustement de dest2---
dest2 = Mid(source, x + 2)
i = 1
While dest2.RowHeight > h
  i = i + 1
  Set dest2 = dest2.Resize(, i)
  dest2(, i).UnMerge 'au cas où...
  dest2(, i) = ""
  dest2.HorizontalAlignment = xlCenterAcrossSelection
  dest2.Rows.AutoFit
Wend
dest2.Merge 'refusion
dest2.HorizontalAlignment = xlGeneral
End Sub
Bonne journée.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 323
Messages
2 087 301
Membres
103 512
dernier inscrit
sisi235