Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

  • Initiateur de la discussion Initiateur de la discussion antiphot
  • Date de début Date de début

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 !

antiphot

XLDnaute Occasionnel
Bonjour à toutes et à tous


J'utilise une macro de Job75 adaptée à mes besoins, qui me permet de séparer une chaine de caractères trop longue tous les X caractères avec retour à la ligne suivante. Actuellement les modifications se font de la feuille original vers la feuille Découpe.

Je ne souhaite pas passer par une feuille intermédiaire et effectuer directement les modifs sur la feuille "Original"

Je joint le fichier exemple

Merci par avance
Philippe
 

Pièces jointes

Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Personne n'a une petite idée ? J'ai bien pensé à passer par une feuille intermédiaire que je détruit ensuite, mais je souhaiterais plutôt passer par une variable de type tableau. Et là je bloque et j'aurais besoin de vos lumières.

Si vous désirez des renseignements complémentaires, je suis à votre disposition

Philippe
 
Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Bonjour,

J'ai trouvé le code un peu confu, j'ai essayé de le simplifier.
Bon courage.

Option Explicit
' Macro adaptée d'un code de Job75
Sub DecoupeLigne(max As Integer)
Dim cel As Range, Txt$, Txt2$
Dim i As Integer, Iterations As Integer

With Sheets("original") 'à adapter

max = 60
For Each cel In Range("B1", [B65536].End(xlUp))

Txt = cel 'texte à découper
Txt2 = cel.Offset(0, -1) 'indice

'***on insère le bon nombre de lignes
Iterations = Int((Len(Txt) - 1) / max)
If Iterations > 0 Then
Rows(cel.Row + 1 & ":" & (cel.Row + Iterations)).Insert shift:=xlUp
End If

'*** on écrit le texte
For i = 0 To Iterations
cel.Offset(i, 0).Value = Mid(Txt, (i * max) + 1, max)
Next i

Next cel
End With

End Sub
 
Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Bonjour voisin

Voici ma proposition puisque mon ami job 🙂 🙂 ne s'est pas encore manifesté
J'ai compris (mais je peux me tromper qu'il s'agissait de ne pas couper n'importe ou mais sur un espace)
Pour ne pas brouiller les données j'ai mis le resultat en colonnes F et G
Pour le remplacement il suffit de mettre en commentaires la derniere ligne de la macro et la remplacer par celle actuellement en commentaires
 

Pièces jointes

Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Bonjour à tous,

N'apporte rien à la discussion

Juste pour saluer l'ami PJ que je n'avais "vu" depuis quelques temps et encore moins croiser.

A++ PJ
A + à tous
 
Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

bonsoir eretyk_1er, pierrejean, JCGL

eretyk_1er : Effectivement ton code est beaucoup plus simple mais le problème c'est que l'on insère des lignes. Ce que je ne veux pas (j'avoue que je ne l'ai pas explicitement spécifié). Néanmoins je garde ta proposition sous le coude et te remercie pour ton aide.

pierrejean : Ta proposition me convient donc parfaitement. La seule petite modif qu'il y aurait à faire c'est que l'on répète le chiffre de la colonne A. Ce chiffre correspond dans la vraie vie à une quantité et il importe qu'il soit donc unique et lié à la première ligne de la chaîne de caractères tronquée.
par ailleurs la virtuosité avec laquelle tu manies les variables tableau me laisse définitivement rêveur.
 
Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Re

Salut a mon ami JC 🙂 🙂

Voici une seconde proposition dont j'espere qu'eretyk_1er ne la trouvera pas trop confuse
Elle donne le même resultat que la precedente et resoud ton problème
Les tableaux sont un peu complexes à 'digerer' mais quelle efficacité !!!
 

Pièces jointes

Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Indeed, ma méthode était un peu brute...
J'aime beaucoup la dernière ligne qui affiche la découpe d'un coup 🙂 Ca fait très magicien qui sort le lapin du chapeau.

bonne continuation!
 
Re : Séparation chaine caractères ts les X caracteres avec retour à la ligne suivante

Bonjour eretyk_1er, C@thy

Merci pierrejean c'est parfait. Je suis comme eretyk_1er, c'est effectivement magique. Mais je tire aussi mon chapeau à cathy car avec des formules c'est tout simplement .... Fou !!
 
Formule magique

Je corrige ma formule en D51:
Code:
=SI(D$49=0;"";GAUCHE(STXT($B51&" ";NbreCaract;SomCaract);CHERCHE("#";SUBSTITUE(GAUCHE(STXT($B51&" ";NbreCaract;SomCaract);D$49);" ";"#";NBCAR(GAUCHE(STXT($B51&" ";NbreCaract;SomCaract);D$49))-NBCAR(SUBSTITUE(GAUCHE(STXT($B51&" ";NbreCaract;SomCaract);D$49);" ";""))))))

à recopier vers la droite et vers le bas
En fait je rajoute un espace à la fin de la chaîne de caractères à découper.
Bises à toutes et tous et bonne journée

C@thy
 
Dernière édition:
- 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

Discussions similaires

Retour