Concaténation dans textbox

Oldevi

XLDnaute Nouveau
Bonjour à tous,


J'ai une feuille excel avec des données en ligne.

J'aimerais que pour chaque valeur donnée dans la colonne A (définie par une combobox dans mon userform), la textbox affiche une ligne de concaténation des données dans colonnes B à G avec retour à la ligne entre chaque ligne.

Mon code permet de concatener la première pour laquelle la valeur combobox1 est présent dans la colonne A alors que j'aimerais ajouter toutes les lignes pour lesquelles on a la combobox1 dans la colonne A.

S = langue.value

Dim I As Byte
With Sheets("Feuille" & S)
Liste = .Cells(Me.ComboBox1.ListIndex + 2, 2)
For K = 2 To 7
Liste = Liste & " " & .Cells(Me.ComboBox1.ListIndex + 2, K)
Next
TextBox1 = Liste
End With

Merci beaucoup d'avance pour votre aide !
 

job75

XLDnaute Barbatruc
Re : Concaténation dans textbox

Bonsoir Oldevi,

Vous pouvez utiliser ce code dans l'UserForm :

Code:
s = langue.Value 'bien sûr définir langue
Dim cel As Range, Liste(), n as Long
For Each cel In Sheets("Feuille" & s).Range("A1", Sheets("Feuille" & s).[A65536].End(xlUp))
  If cel = ComboBox1 Then
    ReDim Preserve Liste(n)
    With Application
      Liste(n) = .Trim(Join(.Transpose(.Transpose(cel.Offset(, 1).Resize(, 6))), " ")) 'colonnes B à G
    End With
    n = n + 1
  End If
Next
TextBox1 = Join(Liste, vbLf)
Voyez l'aide VBA pour la fonction Join.

Application.Trim c'est la fonction SUPPRESPACE.

Nota : la propriété MultiLine de TextBox1 doit être à True.

A+
 

Oldevi

XLDnaute Nouveau
Re : Concaténation dans textbox

Merci Job, ca fonctionne parfaitement. J'ai finalement utilisé ce code qui me permet plus de flexibilité dans la construction de mon output (dans la mesure ou j'ai peu de cellules à concaténer).

Dim Cel As Range, liste1 As String

For Each Cel In Sheets("Réf " & S).Range("A2:A" & Range("A65536").End(xlUp).Row)
If Cel = nom Then liste1 = liste1 & Cel.Offset(, 1) & " - " & Cel.Offset(, 2) & " - " & _
Cel.Offset(, 3) & " (" & IIf(Cel.Offset(, 4) = "", "", Cel.Offset(, 4) & ", ") & _
IIf(Cel.Offset(, 5) = "", "", Cel.Offset(, 5) & ", ") & Cel.Offset(, 6) & ")" & vbCrLf
Next
Réf1 = liste1

Merci encore, bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 349
Membres
103 526
dernier inscrit
HEC