Concaténation dans textbox

  • Initiateur de la discussion Initiateur de la discussion Oldevi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

Oldevi

Guest
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 !
 
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+
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
663
Réponses
3
Affichages
332
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
663
Réponses
1
Affichages
115
Retour