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
 
Bonjour,
Juste une petite observation...
Dans vos 2 codes, il est impératif qu'il y ait une ligne vide entre les groupes...
Bon dimanche
Ce n'est pas impératif mais puisque ça existe autant s'en servir, c'est plus simple.

Avec cette solution les cellules vides ont été supprimées, on s'appuie sur le caractère ">" pour déterminer les zones à étudier :
VB:
Private Sub Worksheet_Activate()
Dim mem, P As Range, i&, a, n&, j&
Application.ScreenUpdating = False
Cells.ClearContents 'RAZ
With Sheets("Feuil2").UsedRange.Columns(1)
    mem = .Value 'mémorise le tableau
    .Replace ">*", "#N/A", xlWhole
    On Error Resume Next 'si aucune SpecialCell
    Set P = .SpecialCells(xlCellTypeConstants, 7) 'nombre texte ou valeur logique
    .Value = mem 'restitue
    If Err Then Exit Sub
    On Error GoTo 0
    ReDim resu(1 To 2 * P.Areas.Count, 1 To 2)
    For i = 1 To P.Areas.Count
        a = Union(P.Areas(i)(0), P.Areas(i)) 'matrice, plus rapide
        n = n + 1: resu(n, 1) = a(1, 1): resu(n, 2) = " "
        n = n + 1: resu(n, 1) = "<": resu(n, 2) = " "
        For j = 2 To UBound(a)
            resu(n, 1) = resu(n, 1) & a(j, 1)
        Next j
        If Len(resu(n, 1)) > 32767 Then resu(n, 2) = Mid(resu(n, 1), 32768)
    Next i
End With
'---restitution---
Cells(1).Resize(n, 2) = resu
End Sub
 

Pièces jointes

- 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