Concaténation sur l'ensemble des lignes d'une TextBox

Voici mon code qui consiste à découper la textbox pour ensuite insérer le même texte sur chaque ligne de celle-ci dans une autre textbox (pour bilan).

----> Mon résultat n’affiche que la dernière ligne mais correctement

L’objectif final que je n’arrive pas atteindre est de concaténer chaque ligne sans prendre en compte les occurrences et les lignes vides.

Contenu de la TEXTBOX1

11 camélia

123 roses bleues

46 marguerites

46 marguerites

66 boutons :roses rouges

'Bouton : Etat des ventes

Private Sub CommandButton5_Click()

Dim x 'Variant du tableau

Dim z As Long 'ligne de la textbox (=ligne tableau)

Dim y As String

With UserForm2.TextBox1

x = Split(.text, vbCrLf) 'découper la textbox1 en tableau

A = "En ce jour, "

B = " ont été comandé.”

For z = 0 To UBound(x) 'pour chaque ligne du tableau

y = A & x(z) & B 'remplacer le contenu de chaque ligne par une concaténation

Next z

UserForm2.TextBox2.text = y

End With

End Sub

Bonjour Princessefee

Ton code ne fait pas la concaténation des lignes

Voici le code correcte

Private Sub CommandButton5_Click()
  Dim x  'Variant du tableau
  Dim z As Long  'ligne de la textbox (=ligne tableau)
  Dim y As String
  With UserForm2.TextBox1
    x = Split(.Text, vbCrLf)  'découper la textbox1 en tableau
    a = "En ce jour, "
    b = " ont été commandés.”"
    For z = 0 To UBound(x)  'pour chaque ligne du tableau
      ' Tester si la ligne est vide ou non
      If Len(x(z)) > 1 Then
        ' faire la concaténation en une ligne
        y = y & x(z)
      End If
    Next z
    UserForm2.TextBox2.Text = a & y & b
  End With
End Sub

A+

Bonsoir BrunoM45

Merci pour ta réponse si rapide.

Néanmoins je n'obtiens pas le résultat escompté... c'est pour cela que je me triture le cerveau depuis quelques temps.

J'aurai du préciser qu'il me faut une concaténation par ligne autrement dit j'ai besoin de la même concaténation pour chacune des lignes de la TextBox. Le but est d'obtenir la mise en forme pour toutes les lignes. En fait mon code ne sélectionnait que la dernière ligne (car la plus grande -> UBound).

Mon but est donc d'obtenir une boucle de concaténation pour chaque ligne de la TextBox.

Je pense que je dois garder les sauts de lignes mis ôter les lignes vides ainsi que les occurrences.

Je vais poursuivre mes recherches. Si je trouve la solution alors je la publierai.

Cordialement

Merci encore

A bientôt

Bonsoir,

Le problème est que sans fichier et avec tes explications "simplistes" du 1er post il est difficile de tout comprendre

Le Split de ta Textbox rempli bien (normalement) le tableau X de chaque "ligne" séparée par un retour à la ligne

Donc la boucle

or z = 0 To UBound(x)

Prend bien tout ton tableau

Reste que le résultat souhaité n'est pas exprimé

A+

Salut!

Je me suis rendue compte que ma requête n'était pas formulée assez précisément. Je voudrais utiliser un bouton (sur ma feuille de commandes) sans avoir à faire appel à une feuille excel. Ce bouton ne devrait servir que pour me faciliter cette tâche rébarbative. Donc en théorie, je pourrai mettre cette macro sur n'importe quel classeur ou feuille.

Voilà ce qui pourra illustrer l'automatisation escomptée:

Contenu de la TEXTBOX1

11 camélias

123 roses bleues

46 marguerites

46 marguerites

66 boutons : roses rouges

RESULTAT souhaité Dans la texbox2

En ce jour, 11 camélias ont été commandé.

En ce jour, 123 roses bleues ont été commandé.

En ce jour, 46 marguerites ont été commandé.

En ce jour, 66 boutons : roses rouges ont été commandé.

Ce code affiche les lignes vides et les occurrences mais affiche ce que je souhaite (sans que puisse copier le résultat vu que c'est dans un MsgBox).

'Bouton : Etat des ventes
Private Sub CommandButton5_Click()
    Dim z         'ligne de la textbox =ligne tableau
    A = "En ce jour,  "
    B = " ont été commandé.”
    For Each z In Split(UserForm2.TextBox1, vbCrLf)
        MsgBox A & z & B
    Next ligne
End Sub

J'ai remplacer la ligne " MsgBox A & z & B" par "Userforms2.textbox.2" et je n'obtiens que la dernières ligne (En ce jour, 66 boutons : roses rouges ont été commandé.).

=====> En y réflechissant,, je pense savoir pourquoi il m'affiche encore la dernière ligne. Mon erreur réside dans le fait de ne pas stocker toutes les lignes pour ensuite me les afficher dans la textbox.

Merci

Cordialement

Re,

C'est plus clair, du moins j'espère, voici le code corrigé

Private Sub CommandButton1_Click()
  Dim x  'Variant du tableau
  Dim z As Long  'ligne de la textbox (=ligne tableau)
  Dim sTxt As String  ' Text concaténé
  Dim a As String, b As String
  With Me.TextBox1
    x = Split(.Text, vbCrLf)  'découper la textbox1 en tableau
    a = "En ce jour, "
    b = " ont été commandés."
    For z = 0 To UBound(x)  'pour chaque ligne du tableau
      ' Tester si la ligne est vide ou non
      If Len(x(z)) > 1 Then
        ' faire la concaténation en une ligne
        sTxt = sTxt & a & x(z) & b & vbCr
      End If
    Next z
    ' enlever le dernier retour à la ligne
    sTxt = Left(sTxt, Len(sTxt) - 1)
    ' L'inscrire dans la TextBox2
    Me.TextBox2.Text = sTxt
  End With
End Sub

A+

Bonjour,

Merci... Tu as assuré cela fonctionne.

Bon week-end.

A La prochaine, peut-être!!!!!

Rechercher des sujets similaires à "concatenation ensemble lignes textbox"