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

XL 2016 concatenation

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 !

finarobert

XLDnaute Occasionnel
Supporter XLD
Bonjour je bute depuis hier soir sur ce petit exercice ;
Tout se passe dans la colonne 1 d’une feuille ;
J’ai ces petits groupes :

<Ident1
c12345
678910
111213141516

<Ident2
cazert
dfghjk

<ident 3
c&é »
qsdf
qsdfg

etc ….

j’aimerai avoir tout ce qui est sous ident sur la même ligne et avec un > avant le c du début :

<ident1
>c1234567891011213141516

<ident2
>cazertdfghjk

<ident3
>c&éqsdfqsdfg

Voila ; En sachant que le nombre de ident est variable et le nombre de lignes à concatener aussi

Merci pour le coup de main !

Robert
 
Re,
je vous joints un fichier à 20000 lignes, il peut faire 300000 lignes mais si cela marche pourr 20000, je pourrai découper.
32767 est le nombre max de caractères dans une cellule.
Est ce que ce sera le cas ou est ce qu'il y aura des "<ident xx" dans ces lignes ?
Dans ce cas cela ne posera pas de problèmes car le max est de 32767 caractères après concaténation, non le nombre de lignes.

Quand à gérer 30000 lignes cela ne pose pas de problème, c'est la macro qui cherche la dernière ligne a traiter, ce sera donc automatique.
 
Re-,
Mea culpa, le maximum de caractères n'est pas de 46 137, mais 34 350, soit "seulement", 1 583 caractères de trop....
Quand tu parles de "fusionner", tu veux peut-être dire "fractionner"? (mettre les 32 767 premiers caractères en colonne A, et le restant en colonne B)?
 
la ligne des <ident xx ne sera pas plus long et ne change pas. Merci pour tout. Robert
 
Re,
Un essai en PJ. Si la chaine dépasse 32767 caractères, le reste est en colonne B.
A noter que dans votre post #1 l' ident commence par ">", dans votre fichier l'ident commence par "<". J'ai adapté.
 

Pièces jointes

J'utilise cette macro dans la feuille "Résultat" :
VB:
Private Sub Worksheet_Activate()
Dim i&, a, n&, j&
Application.ScreenUpdating = False
Cells.ClearContents 'RAZ
On Error Resume Next 'si aucune SpecialCell
With Sheets("Feuil2").UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
    If Err Then Exit Sub
    On Error GoTo 0
    ReDim resu(1 To 2 * .Areas.Count, 1 To 1)
    For i = 1 To .Areas.Count
        a = .Areas(i).Resize(, 2) 'matrice, au moins 2 éléments
        n = n + 1: resu(n, 1) = a(1, 1)
        n = n + 1: resu(n, 1) = "<"
        For j = 2 To UBound(a)
            resu(n, 1) = resu(n, 1) & a(j, 1)
        Next j
        If Len(resu(n, 1)) > 32767 Then MsgBox Len(resu(n, 1)) & " caractères en ligne " & n, , "Dépassement"
    Next i
End With
'---restitution---
Cells(1).Resize(n) = resu
End Sub
Seule la ligne 828 dépasse les 32767 caractères, on peut vivre avec...
 

Pièces jointes

@Cousinhub,
Yes sir, mea culpa.
Je ne m'en suis rendu compte qu'à la mise au point de la macro.

Merci beaucoup Job, je regarde
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…