concaténation verticale variable

r0main23

XLDnaute Nouveau
Bonjour,

voila mon problème

j'ai un tableau de plusieurs milliers de lignes dans lequel j'aimerai concaténer automatiquement les lignes.
En prenant les valeurs se trouvant dans le fichier le résultat serait dans ce genre :

51001 | D81 - N44
51002 | D11 - D22 - D36
...
tout ça dans une autre feuille

le fichier se trouve ici : Free - Envoyez vos documents

merci d'avance de votre aide
 

porcinet82

XLDnaute Barbatruc
Re : concaténation verticale variable

re,

Voici une solution (je suppose que la feuille qui va recevoir le résultat est nommée Feuil1) :
Code:
Sub test()
Dim i&, p%, m%, k%
Dim tablo(65536, 256) As Variant
p = 1
For i = 1 To Range("A65536").End(xlUp).Row
    If IsEmpty(Cells(i, 2).Value) = False Then
        tablo(p, 1) = Cells(i, 2).Value
        m = 2
        For k = i + 2 To Range("A" & i + 2).End(xlDown).Row
            tablo(p, m) = Cells(k, 1).Value
            m = m + 1
        Next k
    p = p + 1
    End If
Next i
With Sheets("Feuil1")
    .Cells.Clear
    For p = 1 To UBound(tablo)
        For m = 1 To 256
            If tablo(p, m) = "" Then Exit For
            .Cells(p, m).Value = tablo(p, m)
        Next m
    Next p
End With
End Sub

@+
 

Pyrof

XLDnaute Occasionnel
Re : concaténation verticale variable

Bonjour,

Voici une autre méthode


Code:
Sub dudule()

last_line = Range("A65536").End(xlUp).Row

Dim tab1       'Crée une variable
Set tab1 = CreateObject("Scripting.Dictionary")

For b = 2 To last_line
    v1 = Cells(b, 1)
    v2 = Cells(b, 2)
    If v2 <> "" Then cle = "C" & v2
    If v1 <> "" Then
        If tab1.exists(cle) Then
            tab1(cle) = tab1(cle) & " - " & v1
        Else
            tab1(cle) = v1
        End If
    End If
Next
'-----------------------------------------------------
' écriture du résultat
'-----------------------------------------------------
l = 1
c = 5
For Each cle In tab1
    Cells(l, c) = cle
    Cells(l, c + 1) = tab1(cle)
    l = l + 1
Next
    
End Sub
 

Pyrof

XLDnaute Occasionnel
Re : concaténation verticale variable

C'est encore moi

un petit rectificatif

'-----------------------------------------------------
' écriture du résultat
'-----------------------------------------------------
l = 1
c = 5
For Each cle In tab1
Cells(l, c) = Mid(cle, 2)
Cells(l, c + 1) = tab1(cle)
l = l + 1
Next
 

Discussions similaires

Statistiques des forums

Discussions
312 581
Messages
2 089 917
Membres
104 306
dernier inscrit
Bouhlal