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 SubA+
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 SubJ'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 SubA+
Bonjour,
Merci... Tu as assuré cela fonctionne.
Bon week-end.
A La prochaine, peut-être!!!!!