OVH Cloud OVH Cloud

Concatener par macro

3 réponses
Avatar
Richard G.
Bonsoir,

J'ai des series de cellules de texte sur en colonne A, s=E9par=E9e par
des lignes vides du type :
zaza
azeza
zezaeza
zaea

azea
zeaze
dqsd

Le nombre de cellules dans ces groupes de cellules varie. J'aimerai
concat=E9ner chauqe groupe de cellule en une seule cellule en colonne B.

Je cherche donc =E0 d=E9velopper une macro qui compterai le nombre de
cellules pleines par groupe puis les concact=E8nerai. Voil=E0 le code en
l'=E9tat :

Sub Concate()

For Each cell In Range("A1:A300")

ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 =3D "=3DCONCATENATE(RC[-1]&"" ""&R[1]C[-1])"
ActiveCell.Offset(0, -1).Select

Next cell

End Sub

Merci pour vos pistes !!
A+

3 réponses

Avatar
Daniel
Bonsoir.
Essaie :

Sub test()
Dim plage As Range, c As Range, Ctr As Long
Set plage = Range("A1", Range("A65536").End(xlUp))
Ctr = 1
For Each c In plage
If c.Value <> "" Then
Range("B" & Ctr) = Range("B" & Ctr) & c.Value
Else
Ctr = Ctr + 1
End If
Next c
End Sub

Cordialement.
Daniel
"Richard G." a écrit dans le message de news:

Bonsoir,

J'ai des series de cellules de texte sur en colonne A, séparée par
des lignes vides du type :
zaza
azeza
zezaeza
zaea

azea
zeaze
dqsd

Le nombre de cellules dans ces groupes de cellules varie. J'aimerai
concaténer chauqe groupe de cellule en une seule cellule en colonne B.

Je cherche donc à développer une macro qui compterai le nombre de
cellules pleines par groupe puis les concactènerai. Voilà le code en
l'état :

Sub Concate()

For Each cell In Range("A1:A300")

ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1]&"" ""&R[1]C[-1])"
ActiveCell.Offset(0, -1).Select

Next cell

End Sub

Merci pour vos pistes !!
A+
Avatar
LSteph
Bonsoir Richard G,
Si j'ai bien compris

'***
Sub concatAenB()
Dim rst As Range, fin As Long, mtxt As String
Set rst = [a1]
fin = [a65536].End(xlUp).Row
Application.ScreenUpdating = False
Do While rst.Row < fin
If IsEmpty(rst) Then
Set rst = rst.Offset(1, 0)
Else
mtxt = rst
For i = 1 To fin
If Not IsEmpty(rst.Offset(i, 0)) Then
mtxt = mtxt & rst.Offset(i, 0)
Else
rst.Offset(0, 1) = mtxt
Set rst = rst.Offset(i + 1, 0)
Exit For
End If
Next
End If
Loop
Application.ScreenUpdating = True
Set rst = Nothing
End Sub
'***

'lSteph

"Richard G." a écrit dans le message de news:

Bonsoir,

J'ai des series de cellules de texte sur en colonne A, séparée par
des lignes vides du type :
zaza
azeza
zezaeza
zaea

azea
zeaze
dqsd

Le nombre de cellules dans ces groupes de cellules varie. J'aimerai
concaténer chauqe groupe de cellule en une seule cellule en colonne B.

Je cherche donc à développer une macro qui compterai le nombre de
cellules pleines par groupe puis les concactènerai. Voilà le code en
l'état :

Sub Concate()

For Each cell In Range("A1:A300")

ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1]&"" ""&R[1]C[-1])"
ActiveCell.Offset(0, -1).Select

Next cell

End Sub

Merci pour vos pistes !!
A+
Avatar
Richard G.
Bonsoir,
Merci à Lsteph et Daniel pour leurs réponses efficaces.
Merci beaucoup !!!

A+