Fusion de deux colonnes en une 3ème

Hello les experts VBA

Est-il possible à travers une macro de multiplier deux colonnes de textes?

Pour faire très simple :

Colonne A | Colonne B

Maison | Rouge

Voiture | Bleue

En colonne C, je voudrais avoir :

Maison Rouge

Maison Bleue

Voiture Rouge

Voiture Bleue

En gros, une concaténation automatique

J'utilise actuellement ce site http://mergewords.com/ mais je préférerai rester sur Excel, d'une part pour ne pas à avoir à changer de fenêtre, d'autre part pour ne pas dépendre d'une ressource en ligne... De plus, cet outil ajoute le contenu des colonnes A et B dans la liste finale, ce qui est parfois gênant.

Je vous remercie beaucoup pour votre aide

20fusion.xlsx (8.09 Ko)

Bonsoir,

Essaye le code suivant :

Sub concatener()
    k = 1
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To Range("B" & Rows.Count).End(xlUp).Row
            Cells(k, 3) = Cells(i, 1) & " " & Cells(j, 2)
            k = k + 1
        Next j
    Next i
End Sub
Raja a écrit :

Bonsoir,

Essaye le code suivant :

Sub concatener()
    k = 1
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To Range("B" & Rows.Count).End(xlUp).Row
            Cells(k, 3) = Cells(i, 1) & " " & Cells(j, 2)
            k = k + 1
        Next j
    Next i
End Sub

Ça me semble tout simplement parfait..

Je me permets de te poser une question supplémentaire : si je veux ajouter une colonne supplémentaire ( A + B + C = D), que dois-je ajouter/modifier dans la macro ?

Merci encore

Bonjour,

je me permets de répondre

Cells(k, 3) = Cells(i, 1) & " " & Cells(j, 2)

Cells(k, 4) = Cells(i, 1) & " " & Cells(j, 2) & " " & Cells(j, 3)

P.

Re,

Tu dois modifier comme ça avec un boucle en plus (et donc une variable en plus) pour la colonne C, par exemple :

Sub concatener()
    k = 1
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To Range("B" & Rows.Count).End(xlUp).Row
            For m = 1 To Range("C" & Rows.Count).End(xlUp).Row
                Cells(k, 4) = Cells(i, 1) & " " & Cells(j, 2) & " " & Cells(m, 3)
                k = k + 1
            Next m
        Next j
    Next i
End Sub

Pour le test, j'ai utilisé 3 termes dans la colonne C (Louée, Achetée, Sous-louée) et ça a marché.

Bonjour,

Pourquoi VBA?

Si vous n'avez pas d'objection pour une simple formule "&" sans VBA, un peu comme patrick1957 mais sans la formule "cellule(i,1)"

2323.xlsx (9.32 Ko)
patrick1957 a écrit :

Bonjour,

je me permets de répondre

Cells(k, 3) = Cells(i, 1) & " " & Cells(j, 2)

Cells(k, 4) = Cells(i, 1) & " " & Cells(j, 2) & " " & Cells(j, 3)

P.

Merci pour ta réponse,

J'ai sûrement fait une erreur dans mon copier/coller, mais la formule ne donne pas le résultat escompté :

Voici le code tel quel :

Sub concatener()
    k = 1
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To Range("B" & Rows.Count).End(xlUp).Row
            Cells(k, 3) = Cells(i, 1) & " " & Cells(j, 2)
            Cells(k, 4) = Cells(i, 1) & " " & Cells(j, 2) & " " & Cells(j, 3)
        Next j
    Next i
End Sub

Et voici le résultat (copie d'écran) :

1

En gros, je ne veux pas le même résultat reporté dans une autre colonne, mais je veux ajouter un élément de plus à la multiplication :

Si j'adapte mon 1er exemple, ça donnerait :

Colonne A | Colonne B | Colonne C

Maison | Rouge | Grande

Voiture | Bleue | Petite

Et en colonne D, cette fois :

Maison Rouge Grande

Maison Rouge Petite

Maison Bleue Grande

Maison Bleue Petite

Voiture Rouge Grande

Voiture Rouge Petite

Voiture Bleue Grande

Voiture Bleue Petite

Voilà, en espérant que ça soit clair... Merci pour ton temps en tout cas

Rrradassse a écrit :

Bonjour,

Pourquoi VBA?

Si vous n'avez pas d'objection pour une simple formule "&" sans VBA, un peu comme patrick1957 mais sans la formule "cellule(i,1)"

J'utilise cette solution quand les volumes de données sont faibles, mais j'ai des dizaines voire centaines de chaines de caractères à fusionner dans ce cas précis


Raja a écrit :

Re,

Tu dois modifier comme ça avec un boucle en plus (et donc une variable en plus) pour la colonne C, par exemple :

Sub concatener()
    k = 1
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To Range("B" & Rows.Count).End(xlUp).Row
            For m = 1 To Range("C" & Rows.Count).End(xlUp).Row
                Cells(k, 4) = Cells(i, 1) & " " & Cells(j, 2) & " " & Cells(m, 3)
                k = k + 1
            Next m
        Next j
    Next i
End Sub

Pour le test, j'ai utilisé 3 termes dans la colonne C (Louée, Achetée, Sous-louée) et ça a marché.

Je viens de voir ta réponse pendant que je répondais, je te remercie énormément et je passe le sujet en validé,

Merci à vous et passez une bonne fin de journée

Rechercher des sujets similaires à "fusion deux colonnes 3eme"