Séparer texte dans plusieurs cellules

NCM

XLDnaute Nouveau
Bonjour à tous,

Voila mon problème, j'ai un texte d'environ 90 caractères avec seulement des espaces situé dans une cellule A1.

Je voudrai séparer ce texte dans 3 cellules ( A2; A3; A4 ) avec dans chaque cellules un maximun de 40 caractères.

Bien sur si au quarantième caractères on se trouve on milieu d'un mot, il faudrai couper le texte à l'espace juste avant ce mot.:(

Malgrés plusieurs essais, je n'arrive pas a faire ce retour en arrière.
 

C@thy

XLDnaute Barbatruc
Re : Séparer texte dans plusieurs cellules

Cela dit, voici la fonction qui va bien ::)

Function Deconcatene$(ByVal Texte$, ByVal Lg&, ByVal Ordre%)
'saucissonne un texte en respectant les mots et ne ne dépassant
'jamais la longueur maxi
Dim Fin&, Bcle&
For Bcle = 1 To Ordre
Fin = InStrRev(Texte, " ", Lg)
If Fin = 0 Or Lg - Fin > Lg / 2 Then Fin = Lg
If Bcle < Ordre Then
Texte = Mid$(Texte, Fin + 1)
Else
Deconcatene = Trim$(Mid$(Texte, 1, Fin))
End If
If Texte = "" Then Exit Function
Next Bcle
End Function

C@thy
 

arko.polo

XLDnaute Nouveau
Re : Séparer texte dans plusieurs cellules

Bonjour et bravo a vous pour ces fonctions.

Le sujet est un peu vieux mais mon problème est similaire au sujet.
J'ai une liste d'adresse (1 colonne) que je doit formater au format de la poste à savoir 3 champs de 40 caractères max.

En utilisant les fonctions postées sur ce forum (DeconcatenerMax40CaracteresV2.xls) je perds le dernier mot de chaque adresse.
ex: 12 avenue de la république -> 12 avenue de la

Quelqu'un peut-il m'aider à trouver ce qu'il ne va pas dans ces fonctions?

Merci
 

C@thy

XLDnaute Barbatruc
Re : Séparer texte dans plusieurs cellules

Bonjour arko.polo, et BIENVENUE SUR XLD

avec ma fonction, cela fonctionne... arf!!! une fonction c'est comme un fonctionnaire, ça fonctionne...
=Deconcatene(A1;40;1)

C@thy
 

arko.polo

XLDnaute Nouveau
Re : Séparer texte dans plusieurs cellules

Bonjour Cathy,

Je ne sais pas comment utiliser ta fonction! C'est du VB?

Moi je me suis servi des fonctions utilisées dans le doc "DeconcatenerMax40CaracteresV2.xls" et ça me perds le dernier mot.
Je m'en suis sorti simplement en ajoutant (concatener) un caractère à la fin de chaque adresse
=concatener(A1;" *")
puis appliquer les fonction du fichier.
Et là ça me sort mes 3 colonnes de 40 caractères max sans le caractère ajouté.

Si ca peut aider ceux qui, comme moi, ne savent pas créer de nouvelles fonctions.

Merci

PS: super forum
 

C@thy

XLDnaute Barbatruc
Re : Séparer texte dans plusieurs cellules

voici le fichier,
la fonction c'est du vba, mais elle s'utilise dans une cellule comme une fonction d'excel
les paramètres sont : cellule à déconcaténer, nb de caractères, n° d'ordre (ex. déconcaténer A1 les 40 premiers aractères s'écrira
=Deconcatene($A$1;40;1)
les 40 suivants : =Deconcatene($A$1;40;2)
mais pour utiliser la même formule partout en trirant il faut utiliser ligne ou colonne, selon que l'on tire vers le bas ou vers la droite
 

Pièces jointes

  • DeconcatenerAkopolo.xls
    56.5 KB · Affichages: 101

Karla

XLDnaute Nouveau
Bonjour
Voila mon problème, j'ai une colonne avec du texte dépassant 25 caractères

Je voudrai séparer ce texte dans différentes colonnes avec dans chaque cellules un maximum de 25 caractères.

Bien sur si au 25ème caractères se trouve on milieu d'un mot, il faudrait couper le texte à l'espace juste avant ce mot.

Malgré plusieurs essais, je n'arrive pas a faire ce retour en arrière. J'ai environ 21000 lignes à séparer ci-joint un échantillon de mon fichier. Quelqu'un peut m'aider?
 

Pièces jointes

  • Échantillon.xlsx
    9.5 KB · Affichages: 7

Karla

XLDnaute Nouveau
Re : Séparer texte dans plusieurs cellules

Bonjour,

L'avantage de la formule est qu'on peut extraire un nombre variable de caractères par cellule.
Voir la pièce jointe en modifiant les données en ligne 1.

De plus il est aisé d'étendre les formules à plus de trois cellules.


Bonjour C@thy,
Bonjour
Voila mon problème, j'ai une colonne avec du texte dépassant 25 caractères

Je voudrai séparer ce texte dans différentes colonnes avec dans chaque cellules un maximum de 25 caractères.

Bien sur si au 25ème caractères se trouve on milieu d'un mot, il faudrait couper le texte à l'espace juste avant ce mot.

Malgré plusieurs essais, je n'arrive pas a faire ce retour en arrière. J'ai environ 21000 lignes à séparer ci-joint un échantillon de mon fichier. Quelqu'un peut m'aider?
 

Pièces jointes

  • Échantillon.xlsx
    9.5 KB · Affichages: 2

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Karla , bienvenue sur XLD,

Un essai via une macro en VBA.
  • cliquez sur le bouton Hop! pour lancer la macro.
  • la macro agit sur la feuille active et la colonne A
  • la cellule A1 est un intitulé de colonne et doit être présent
  • si un mot dépasse le nombre de caractères max (on peut le modifier dans le code via la constante : Taillemax), alors le message d'information final l'indique. Dans les colonnes résultats, les cellules dont le mot dépasse le nombre de caractères max contiennent le texte "Err-Taille". Il suffira de rechercher ces termes sur la feuille, pour voir les lignes en cause.
  • le code est dans module1
  • environ 0.7 secondes pour 22 000 lignes
 

Pièces jointes

  • Karla- Échantillon- v1.xlsm
    200.9 KB · Affichages: 24

Karla

XLDnaute Nouveau
Bonsoir @Karla , bienvenue sur XLD,

Un essai via une macro en VBA.
  • cliquez sur le bouton Hop! pour lancer la macro.
  • la macro agit sur la feuille active et la colonne A
  • la cellule A1 est un intitulé de colonne et doit être présent
  • si un mot dépasse le nombre de caractères max (on peut le modifier dans le code via la constante : Taillemax), alors le message d'information final l'indique. Dans les colonnes résultats, les cellules dont le mot dépasse le nombre de caractères max contiennent le texte "Err-Taille". Il suffira de rechercher ces termes sur la feuille, pour voir les lignes en cause.
  • le code est dans module1
  • environ 0.7 secondes pour 22 000 lignes

Merci infiniment, j'avais pas pensé a ça. J'ai tellement eu de essaies infructueux. Au plaisir. :) Vous me sauvez la vie.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Karla, à tous,

En relisant le code de la v1, j'ai vu une petite coquille. Juste avant la ligne comportant Next i, il faut remplacer Mid(s, 1) par Mid(s, 2).
La séparation reste identique mais peut éviter l'insertion non justifiée d'une cellule vide en cas de présence d'un mot trop long (dont le nombre de caractères est supérieur à Taillemax. Je joins le fichier sans la coquille.
 

Pièces jointes

  • Karla- Échantillon- v1a.xlsm
    200.9 KB · Affichages: 21

Karla

XLDnaute Nouveau
Bonjour @Karla, à tous,

En relisant le code de la v1, j'ai vu une petite coquille. Juste avant la ligne comportant Next i, il faut remplacer Mid(s, 1) par Mid(s, 2).
La séparation reste identique mais peut éviter l'insertion non justifiée d'une cellule vide en cas de présence d'un mot trop long (dont le nombre de caractères est supérieur à Taillemax. Je joins le fichier sans la coquille.


Ma pomme merci beaucoup de prendre le temps de m'aider et d'avoir trouvé la petite coquillle. Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN