Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Concaténation avec contrainte Espace / Nb de caractères

  • Initiateur de la discussion Initiateur de la discussion Vince.G
  • 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 !

V

Vince.G

Guest
Bonjour,

Je me permets d'ouvrir une discussion, car me voici bloqué dans un problème, que je pense assez simple pour des pro comme vous (Je ne tartine pas, j'ai déjà eu à faire à ce forum, et le résultat fut...impressionnant!)

Voici mon problème :
Je dois diviser des colonnes de texte en deux voir trois en fonction du nb de caractère ET des espaces. Si le nb de caractères est = 35, alors coupe, sauf si un mot est coupé dans l'opération. Alors l'idée est de prendre les caractères uniquement jusqu'à la fin du mot précédent.

Un petit fichier pour une idée toute simple 🙂

Je vous remercie par avance !

Vince.
 

Pièces jointes

Re : Concaténation avec contrainte Espace / Nb de caractères

Et toutes mes excuses... Ce n'est pas une concaténation, mais bien l'inverse ! Séparation d'une colonne en plusieurs avec contrainte.
 
Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour,
Solution par macro à essayer :

VB:
Sub Test()
   Dim ar, ar2(0 To 100), i As Integer, n As Integer
   ar = Split(ActiveCell, " ")
   n = 0
   ar2(0) = ar(0)
   For i = 1 To UBound(ar)
      If Len(ar2(n) & " " & ar(i)) > 35 Then
         n = n + 1
         ar2(n) = ar(i)
      Else
         ar2(n) = ar2(n) & " " & ar(i)
      End If        
   Next i
   ActiveCell.Offset(0, 1).Resize(, n + 1) = ar2
End Sub

A+
 
Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour Vince.G

Vois si cela te convient

Edit : Salut Grand Chaman
 

Pièces jointes

Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour Vince.G, Grand Chaman Excel, pierrejean,

Avec cette fonction VBA :

Code:
Function SEPAR(t$, n%)
Dim i%, j%, p%
While i < Len(t)
  i = i + 1
  j = j + 1
  If Mid(t, i, 1) = " " Then p = i
  If j = n Then
    t = Application.Replace(t, p, 0, Chr(1))
    j = 0
  End If
Wend
SEPAR = Split(t, Chr(1))
End Function
Formule en B8 à tirer à droite et vers le bas :

- sur Excel 2007 et versions suivantes :

Code:
=SIERREUR(INDEX(SEPAR($A8;35);COLONNES($B8:B8));"")
- sur Excel 2003 et versions antérieures :

Code:
=SI(OU($A8="";COLONNES($B8:B8)>NBVAL(SEPAR($A8;35)));"";INDEX(SEPAR($A8;35);COLONNES($B8:B8)))
Fichiers .xlsm et .xls joints.

Edit : bien noter que tous les espaces sont conservés et que la coupure se fait avant l'espace.

A+
 

Pièces jointes

Dernière édition:
Re : Concaténation avec contrainte Espace / Nb de caractères

Re,

Vous nous induisez en erreur avec votre exemple Vince.G.

En effet les cellules D4 et D10 contenaient plus de 35 caractères...

En fait le comptage des 35 caractères doit reprendre à partir de l'espace avec j = i - p :

Code:
Function SEPAR(t$, n%)
Dim i%, j%, p%
While i < Len(t)
  i = i + 1
  j = j + 1
  If Mid(t, i, 1) = " " Then p = i
  If j = n + 1 Then
    t = Application.Replace(t, p, 0, Chr(1))
    j = i - p 'comptage à partir de l'espace
  End If
Wend
SEPAR = Split(t, Chr(1))
End Function
Edit : il faut aussi écrire If j = n +1 Then

Fichiers (2).

A+
 

Pièces jointes

Dernière édition:
Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour à tous,

En utilisant dès le début la fonction Split (comme Grand Chaman) c'est plus simple :

Code:
Function SEPAR(t$, n%)
Dim s, i%, X$(), j%
s = Split(t)
For i = 0 To UBound(s)
  ReDim Preserve X(j)
  t = Trim(X(j) & " " & s(i))
  If Len(t) > n Then i = i - 1: j = j + 1 Else X(j) = t
Next
SEPAR = X
End Function
Deux remarques :

- les espaces après la coupure sont supprimés

- de ce fait la cellule C10 contient exactement 35 caractères.

Fichiers (3).

A+
 

Pièces jointes

Re : Concaténation avec contrainte Espace / Nb de caractères

Re

Salut Gerard

j'ai enfin compris ou se situait le piège !!!

Version à tester
 

Pièces jointes

Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour Pierre,

Tout dépend de ce que l'on veut faire :

- soit conserver tous les espaces : c'est le cas de ma version (2)

- soit supprimer l'espace après chaque coupure : ma version (3).

Si tu veux on peut appeler ça un piège 🙂

A+
 
Re : Concaténation avec contrainte Espace / Nb de caractères

Bonjour à tous,

Etant parti en week end prolongé, je n'ai pas pu mettre les pieds sur le forum.
Je reviens, et Ô Miracle, il y a profusion de réponses.

Merci beaucoup pour ces solutions qui conviennent parfaitement. Et désolé pour l'erreur dans mon fichier !

Vous êtes miraculeux.

Cordialement,

Vincent.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
8
Affichages
2 K
I
Réponses
6
Affichages
2 K
V
Réponses
15
Affichages
3 K
L
P
Réponses
4
Affichages
1 K
pascal44
P
P
Réponses
3
Affichages
2 K
plombiero
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…