XL 2019 Concaténer plusieurs lignes à partir d'une référence en doublon

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 !

donatello2

XLDnaute Nouveau
Bonjour,

J'aimerais obtenir de l'aide sur l'un de mes fichiers Excel.

Je travaille sur un tableau contenant une dizaine de colonnes ainsi que plusieurs milliers de lignes.

Dans ces lignes se trouvent des références qui peuvent potentiellement revenir en doublons voir triplons et plus sans pour autant que les autres données de cette même ligne soit les mêmes.

Je souhaiterais que les lignes contenant cette la référence soit supprimer et les informations des autres cellules concatener en une unique.

Voici un extrait de mon tableau :

1678272960937.png


j'aimerais que les lignes comportant un doublon sur les données si situant en colonne E (Code unique référence) soient fusionnées en une seule et que les données des colonnes suivantes concaténer. Je ne sais pas si je parviens à y expliquer correctement alors voici un exemple de comment je souhaiterais plus ou moins retrouver mes données après la macro :

1678273659587.png


Les données concaténer seraient alors séparés d'un tiret ou d'un slash.

En espérant que mes explications vous suffisent.

Je vous joins ce même fichier dans la discussion et vous remercie par avance de votre temps et de votre aide !

Bonne journée à vous tous.

Cordialement.
 

Pièces jointes

Bonjour

Dans ton exemple, le code unique est créé à partir des colonne A B et D==> donc elles seront identiques
mais la colonne C et F.. sont elles censées etre toujours les memes ?
ainsi, dans le résultat, il n'y a pas de "concatenation"
 
avec ce code

VB:
Sub Compiler()

Dim TabData() As Variant

With Sheets("Feuil1")
    LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
    Set zone = .Range("A1:Q" & LastLine)
    
    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=zone.Columns(5), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    With .Sort
        .SetRange zone
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
     'on peut mettre tout dans un tableau VBA
    TabData = zone.Value
    
    For i = LBound(TabData, 1) + 1 To UBound(TabData, 1) - 1 'pour toutes les lignes du tableau
        deb = i
        While TabData(i + 1, 5) = TabData(deb, 5)
            For j = 8 To 17
                TabData(deb, j) = TabData(deb, j) & "-" & TabData(i + 1, j)
                TabData(i + 1, j) = ""
            Next j
            i = i + 1
        Wend
    Next i
End With
With Sheets("Feuil2")
    .Range("A1").Resize(UBound(TabData, 1), UBound(TabData, 2)) = TabData
    .Range("A1").Resize(UBound(TabData, 1), UBound(TabData, 2)).Columns(8).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With

End Sub
 
Un énorme merci pour cette proposition qui répond à ma demande !

Par simple curiosité, est-il possible via VBA dans un programme de ce genre d'effectuer une mise en forme des données qui vont être travaillées ?

Merci encore, passée une bonne journée.

Cordialement
 
oui, c'est tout à fait possible

utilise l'enregistreur de macro pour avoir un début de code
1) tu lances l'enregistreur (onglet Développeur)
2) tu appliques toutes te mises en forme
3) tu arretes l'enregistreur

et tu postes le fichier
on regardera le code pour le nettoyer et le rendre "dynamique"
 
- 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

Discussions similaires

Retour