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
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 SubRaja 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 SubPour 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)"
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 SubEt voici le résultat (copie d'écran) :
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 SubPour 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