Découper chaîne de caractères (même en plein milieu d'un mot)

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 !

lolo62000

XLDnaute Junior
Bonjour,
je bloque face à un problème de découpage.
Je souhaiterais découper de nombreuses lignes situées en colonne A, et pouvant contenir jusqu'à 400 caractères, en cellules de 70 caractères maximum. Donc 70 caractères en B, 70 en C etc.... (comme dans la ligne 1, découpée manuellement pour l'exemple).
Le but de cette manoeuvre est d'intégrer du texte dans un logiciel pas très récent, qui n'accepte que 70 caractères à la fois. Il est donc important d'avoir exactement 70 caractères à chaque fois, même si cela nécessite de couper un mot en deux.
Je souhaiterais également faire le découpage via une macro, car les lignes vont par la suite être copiées collées, et si j'utilise des fonctions, le texte découpé ne sera pas sélectionnable pour un copier/coller, mais affichera la fonction dans la cellule.
Je joins donc un petit fichier, pour bien montrer ce que je souhaite avoir.
Merci.
Laurent.
 

Pièces jointes

Re : Découper chaîne de caractères (même en plein milieu d'un mot)

Bonjour.
VB:
Sub Macro1()
With Intersect(Feuil1.[B:E], Feuil1.UsedRange.EntireRow)
   .FormulaR1C1 = "=MID(RC1,(COLUMN()-2)*70+1,70)"
   .Value = .Value
   End With
End Sub
À +
 
Re : Découper chaîne de caractères (même en plein milieu d'un mot)

Bonjour Lolo6200,Danreb

Autre approche également par macro:

A adapter pour boucler sur ta plage de données:

Code:
Sub Coupercarac()

Sheets("Feuil1").Select
Dim NbCarac, NbColonne, i As Integer
Dim Ratio As Double


NbCarac = Len(Range("A2").Value)
Ratio = NbCarac / 70

    If NbCarac Mod 70 = 0 Then
    NbColonne = Ratio
    Else
    NbColonne = Int(Ratio) + 1
    End If

    For i = 2 To NbColonne + 1
    Cells(2, i).Value = Mid(Cells(2, 1).Value, 1 + (70 * (i - 2)), 70)
    Next i

End Sub

Bonne soirée
 
Re : Découper chaîne de caractères (même en plein milieu d'un mot)

Bonjour le Forum,
Bonjour lolo62000, Danreb, Vdavid,

Après ces belles solutions macro voila une formule a mettre en B1 et a étirer vers la droite.


=GAUCHE(SUBSTITUE($A$1;GAUCHE($A$1;70*(COLONNE()-2));"");70)
 
Re : Découper chaîne de caractères (même en plein milieu d'un mot)

Bonjour, le Fil, le Forum,

Une autre façon de découper - conversion de données - à adapter, si besoin (longueur des phrases) :

Code:
Sub Découper()
    Columns("A:A").TextToColumns Destination:=Range("B1"), DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), _
    Array(70, 1), Array(140, 1), Array(210, 1), Array(280, 1)), TrailingMinusNumbers:=True
End Sub

Bon courage et à bientôt 🙂🙂
 
Re : Découper chaîne de caractères (même en plein milieu d'un mot)

Bonsoir tout le monde,
ci-joint une fonction personnalisée utilisant une expression rationnelle :
Code:
Function Soixante_dix(Chaine As String, Rang As Integer) As String
Dim oRegExp As Object, Matches As Object
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
    .Global = True
    .Pattern = ".{1,70}"
    Set Matches = .Execute(Chaine)
    If Rang - 1 < Matches.Count Then Soixante_dix = Matches(Rang - 1)
End With
End Function
A+
 
- 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