XL 2016 [REGLE] Comment inserer un caractère tout les 40

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 !

gortex3D

XLDnaute Junior
Bonjour tout le monde

Voila je dois traiter un fichier excel afin de l'intégrer dans notre futur logiciel de gestion. J'ai un fichier de 6000 lignes qui dans une colonne intègre la description des articles.

Dans notre futur logiciel pour le retour à la ligne je dois avoir ce caractère | (ALT GR + 6 ) tout les 40 caractères.

J'ai des descriptions qui montent à plus de 3000 caractères donc je dois faire une boucle. Je ne sais pas du tout utiliser les macros en général je m'arrête au formule dans une cellule mais la je suis bloqué. Pourriez vous m'aider?

Merci d'avance
 
Bonjour,

Dans la barre de formule, je ne vois pas d'espace entre les caractères AVANT et APRES.
Après je suis reparti d'une fonction apportée par Pierre-Jean à une question sur le forum.

Donc mon détail serait imprécis par rapport à ce que l'auteur pourrait vous en dire.
Néanmoins :
- Len sert à déterminer la longueur d'un texte et ici, à l'intérieur d'une même cellule, de travailler sur un espacement précis (Step de 40)
- Mid correspond à une formule saisie STXT
- Trim sert à supprimer les espaces.

Cette fonction est bien pratique, tout le mérite revenant à son auteur qui m'a personnellement beaucoup aidé sur le forum.

Bonne journée,
thierry

edit
@Dranreb : bonjour et ... merci !
 
Dernière édition:
Bonjour.
Écriture un peu différente :
VB:
Function Ins40(ByVal Z As String) As String
Dim P As Long
Ins40 = Left$(Z, 40)
For P = 41 To Len(Z) Step 40
   Ins40 = Ins40 & "|" & Mid$(Z, P, 40)
   Next P
End Function
Faire Alt+F11, puis, dans l'explorateur de projet, Insertion, Module.

Edit: Bonjour zebanx
 
Dernière édition:
Re-bonjour gortex3D,

Je ne comprends pas car sur le fichier je n'ai aucun espace même si il faut reconnaitre que le caractère "|" donne cette impression.
Faire un copier-coller valeur SVP sur une autre cellule et vous verrez qu'il n'y a pas d'espace dans la barre de formule.

Sinon... je ne vois pas.
thierry
 
Je tiens a m'excuser effective effectivement ce n'est qu'une impression. En tout cas vous m'avez beaucoup aider et c'est exactement ce que je cherchais. j'espérais que l'on puisse réaliser cette action sans passer par vba mais bien expliquer c'est pas trop compliquer.

Encore merci pour votre aide et votre réactivités.
 
Une fonction faisant autre chose, sans couper de mot dans un texte comportant des espaces :
VB:
Function Espace40(ByVal Z As String) As String
Dim P As Long
Espace40 = Replace(Z, vbLf, " ")
P = 41
Do: P = InStrRev(Espace40, " ", P)
   Mid$(Espace40, P, 1) = "|"
   P = P + 41: Loop Until P > Len(Z)
End Function
 
Oui mais elle n'était pas bonne sur des textes courts. Corrigé :
VB:
Function Espace40(ByVal Z As String) As String
Dim P As Long
Espace40 = Replace(Z, vbLf, " ")
P = 41
Do Until P > Len(Z)
   P = InStrRev(Espace40, " ", P)
   Mid$(Espace40, P, 1) = "|"
   P = P + 41: Loop
End Function
Remarque: elle ne réagirait toujours pas bien sur des mots de plus de 40 caractères, mais espérons qu'il n'y en aura pas ?…
 
La fonction renvoie alors #VALEUR!
Je vais voir si on peut l'éviter.

Essayez comme ça :
VB:
Function Espace40(ByVal Z As String) As String
Dim P As Long, Q As Long
Espace40 = Replace(Z, vbLf, " ")
P = 0: Q = 41
Do Until Q > Len(Espace40)
   Q = InStrRev(Espace40, " ", Q)
   If Q > P And Q - P <= 40 Then
      Mid$(Espace40, Q, 1) = "|"
   Else
      Q = P + 40
      Espace40 = Left$(Espace40, Q - 1) & "…|" & Mid$(Espace40, Q)
      End If
   P = Q: Q = Q + 41: Loop
End Function
 
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
Retour