Fusionner 2 cellules d'une même colonne dans une seule ligne (via un code)

Bonjour à tous,

Je viens vous demander de l'aide sur ce magnifique outil qu'est Excel et qui me martyrise tant quelques fois...

Comme le titre l'indique, j'aimerai fusionner 2 cellules d'une même ligne (en se basant sur un même code) en une seule ligne.
Je vous mets l'exemple en dessous (et le fichier excel en PJ)

sans titre

Si quelqu'un pourrait m'aider, ce serait topissime !!

D'avance merci et prenez soin de vous ! :)

Oups, j'ai oublié le fichier d'origine.
Le voici !

(le fichier sur lequel je vais devoir appliquer la formule fait 15000 lignes...)

13classeur1.xlsx (10.37 Ko)

Bonjour,

Un test

39classeur1.xlsm (21.04 Ko)

Waaa c'est top, je suis assez impressionné je dois dire...
Comment je peux appliquer cela sur mon fichier ? J'ai vu le code de la macro mais jamais j'y arriverai, je m'attendais à une simple formule

Bonjour Nicobastia, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
OD.Cells.Clear 'efface les anciennes valeurs de l'onglet OD
OS.Rows(1).Copy OD.Range("A1") 'copie la ligne 1 de l'onglet source et la colle dans A1 de l'onglet destination
OS.Rows(1).Copy 'copie la ligne 1 de l'onglet source
OD.Range("A1").PasteSpecial (xlPasteColumnWidths) 'colle la largeur des colonnes dans l'onglet destination
Application.CutCopyMode = False 'supprime le clignotement lié au copier/coller
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données de la première colonne du tableau des valeurs TV
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments J du tableau temporaire TMP
    K = K + 1 'incrémente K
    ReDim Preserve TL(1 To UBound(TV, 2), 1 To K) 'redimensionne le tableau des lignes TL (autant de lignes que TV a de colonnes, K colonnes)
    TL(1, K) = TMP(J) 'définit la donnée ligne 1 colonne K de TL
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
        If TV(I, 1) = TMP(J) Then 'condition : si la donnée ligne I colonne 1 de TV est égale à l'élément J de TMP
            TL(2, K) = IIf(TL(2, K) = "", TV(I, 2), TL(2, K) & " " & TV(I, 2)) 'définit la donnée ligne 2 colonne K de TL
            TL(3, K) = IIf(TL(3, K) = "", TV(I, 3), TL(3, K)) 'définit la donnée ligne 3 colonne K de TL
            TL(4, K) = IIf(TL(4, K) = "", TV(I, 4), TL(4, K)) 'définit la donnée ligne 4 colonne K de TL
            TL(5, K) = IIf(TL(5, K) = "", TV(I, 5), TL(5, K)) 'définit la donnée ligne 5 colonne K de TL
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
Next J 'prochain élément de la boucle 1
OD.Range("A2").Resize(K, UBound(TV, 2)).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé en A2 redimensionnée de l'onglet OD
OD.Activate 'active l'onglet OD
OD.Range("A1").Select 'sélectionne la cellule A1 de l'onglet OD
End Sub

[Édition]

Ooops, je navet pas rafraîchi... Bonjour M12...

[Édition 2]

Waow ! C'est top tellement c'est simple et efficace !.... Chapeau !


En fait on peut même simplifier au final mais je n'ai toujours pas la solution:
Si quelqu'un à la solution...

sans titre
10classeur2.xlsx (9.91 Ko)

Merci ThauTheme et M12, mais obligé de passer par une macro pour avoir ce résultat ?
Si je copie/colle la macro dans mon fichier ça va fonctionner ?

Avec une formule je peux plus ou moins la décrypter et l'appliquer à mon fichier, la macro.......

En fait, j'ai simplement besoin de la colonne "DESCRIPTION" qui comporte les 2 cellules de la colonne "LIBELLE".

Je sais utiliser la formule ="A2&" "&B2 pour fusionner quand c'est 2 cellules de 2 colonnes distinctes mais pour ce cas de figure ou c'est 2 cellules d'une même colonne, ça ne me donne pas ce que je souhaite obtenir...

Re,

Si tu n'utilises pas de macro, tu ne pourras pas supprimer les lignes en doublons, sauf à la main, main pour 15000 lignes

J'ai réussi à me débrouiller avec la formule &""& !!!!!!!

En fait j'ai mis des caractères devant mes libellés et d'autres devant mes descriptions et en faisant une bonne salade de tri et filtres j'ai réussi à obtenir ce que je voulais. C'est pas du tout académique mais j'ai réussi

A l'avenir je vais me pencher un peu plus sur l'utilisation des macros Excel, ça me faciliterait (un peu) la vie !

Merci beaucoup pour votre aide, je clôture le post.
Passez une bonne journée et de bonnes fêtes de fin d'année !

Rechercher des sujets similaires à "fusionner meme colonne seule ligne via code"