Je cherche, désespérément, à trouver le code VBA me permettant de paramétrer un bouton au sein d'excel qui concaténera plusieurs valeurs et les formatera de manière spécifique.
J'ai une colonne de 20 cellules (disons A1 à A20) et je souhaiterais que le bouton en question, lorsque l'on clique dessus, puisse concaténer toutes les valeurs situées dans ces cellules (des adresses mails en l'occurence) et me les copier dans une autre cellule (disons B1) sous la forme :
voici une macro simple qui le fera.
Par contre les espaces entre les adresse sont en trop, la macro ne les met pas. Si tu les veux remplace ";" par "; "
Code:
Sub Concantener()
Dim c As Range
Dim Texte As String
For Each c In Range("A1:A20")
Texte = Texte & c & ";"
Next
Range("B1") = Left(Texte, Len(Texte) - 1)
End Sub
Encore plus simple et plus court
Code:
Sub Concantener_2()
Dim t
t = Application.Transpose(Range("A1:A20").Value)
Range("B1") = Join(t, ";")
End Sub
Et pour finir encore plus court:
Code:
Sub Concantener_3()
Range("B1") = Join(Application.Transpose(Range("A1:A20").Value), ";")
End Sub
mais sinon, pour éviter les cellules vides, sur la base du 1er code de Hasco :
Code:
Sub Concantener()
Dim c As Range
Dim Texte As String
For Each c In Range("A1:A20")
if c.value <> "" then Texte = Texte & c & "; "
Next
Range("B1") = Left(Texte, Len(Texte) - 1)
End Sub
Function concat(r As Range, sep As String)
Dim c As Range
For Each c In r
concat = concat & sep & c
Next
concat = Mid$(concat, Len(sep) + 1)
End Function
BOnjour à vous tous !
Voilà un bout de code que vous pouvez mettre :
Sub Concantener_3()
Range("B1") = Join(Application.Transpose(Range("A1:A20").SpecialCells(xlCellTypeConstants).Value), ";")
End Sub
Ca ne prend qu'une ligne de code et normalement ne prend en compte que les données qui sont des constantes. A voir chez vous