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

concaténation verticale variable

  • Initiateur de la discussion Initiateur de la discussion r0main23
  • 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 !

R

r0main23

Guest
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
 
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

@+
 
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
 
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
 
- 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

S
Réponses
1
Affichages
1 K
schoum5
S
T
Réponses
0
Affichages
7 K
tigrouille
T
S
Réponses
0
Affichages
973
sapheron
S
M
Réponses
10
Affichages
7 K
mirage23
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…