Textbox vers listview en VB6

Résolu
FOUNI
Messages postés
29
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
8 mars 2013
- 31 août 2009 à 16:50
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 1 sept. 2009 à 12:56
Bonjour les pros

Voilà ma question

je récupère un texte situé dans le presse papier windows
et je le place dans un textbox

pour info si l on place le texte dans une feuille excel ,le contenu de chaques lignes se trouve uniquement dans la première cellule

j'aimerai récupérer ce texte dans une listview , donc par ligne et par colonne mais en ayant certaine information dans la même colonne


voilà les données du textbox

11111111111 FI Facture d' analyse 19.12.2007 03.01.2008 0,30 55555555555
Encaissement 04.01.2008 04.01.2008 9,26- 66666666666
Encaissement 04.01.2008 04.01.2008 0,59- 7777777777
Encaissement 04.01.2008 04.01.2008 0,30- 88888888888
22222222222 FI Facture cyclique 11.02.2008 26.02.2008 9,52 44444444444
33333333333 FI Facture cyclique 11.02.2008 26.02.2008 28,43 2222222222
44444444444 FI Facture cyclique 11.02.2008 26.02.2008 1,63 37000371889


Comme vous le voyer les espaces entre les texte sont diff , j'ai réussi à placer tout ceci dans une listview mais je n'arrive pas à faire concorder (par exemple ) les montants dans la même colonne

POUR INFO IL Y A 5 espace avant Encaissement

voici mon code

Me.Text1.Text = Clipboard.GetText() je récupère le texte du presse papier dans le textbox



Dim monTab
Dim COL As Integer

Dim LIGN As Integer
Dim ligne
Dim tabLigne

je récupère le textbox ligne par ligne
tabLigne = Split(Me.Text1.Text, Chr(13))

LIGN = 1
For Each ligne In tabLigne

ligne = left(CStr(ligne), Len(ligne))



With ListViewHistorique
je place chaque ligne dans la première cellule de la list view j'ai indiquer 21 correspondant au nombre de ligne car je ne sais pas comment indiquer jusqu'à la dernière ligne du textbox
If LIGN = 21 Then
Exit Sub
End If

ajout ligne dans listview
.ListItems.Add




.ListItems(LIGN).ListSubItems.Add , , CStr(ligne)

monTab = CStr(ligne)


découpe du texte de chaque ligne en fonction des espaces
monTab = Split(monTab, " ")
COL = 1

on place chaque decoupe dans les colonnes jusqu'à 15 , je ne sais pas indiquer jusqu'à la dernière valeur de la ligne
For COL = 1 To 15
.ListItems.Add
.ListItems(LIGN).ListSubItems.Add , , monTab(COL - 1)



Next
on change de ligne dans la listview
LIGN = LIGN + 1

End With

Next

merci à ceux qui peuvent m'aider

5 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
1 sept. 2009 à 10:45
Re
Coloration syntaxique = le menu présent au dessus de la zone où tu écris, qui commence par le B de Bold, I de Itallique, etc : parmi ces icones, l'une d'elle permet de choisir le type de langage du texte et fabrique la coloration automatiquement.

D'après les séparateurs de colonne que tu as placé (@), chaque ligne a bien 5 infos (champs) par ligne.
Si tu es sûr que ces séparations sont des espaces (un espace = une séparation), ton problème vient de la récupération du texte composant le deuxième champ, pouvant inclure aussi des espaces.
Je pense que, visuellement, tu vois des espaces, mais qu'il s'agit surement d'un autre caractère.
Il faudrait que tu analyse caractère par caractère pour en être sûr.
Si ce n'est pas un espace mais une tabulation, par exemple, la solution est simple.
Sinon, je te propose :
Tous tes champs, à l'exception du 2ème, ne comportent pas d'espace.
Pour le 3ème champ, il a aussi un espace, mais un seul, donc facile à repérer.
Fais un Split de ta ligne :
Dim Elements() As String
Elements = Split(maLigne, " ")
Tu obtiendras un tableau, de 0 à X, avec les textes.
Prenons pour exemple la 1ère ligne :
  Element(0) = 20001766351
  Element(1) = FI
  Element(2) = Facture
  Element(3) = de
  Element(4) = souscription
  Element(5) = 19.12.2007
  Element(6) = 03.01.2008
  Element(7) = 0,30
  Element(8) = 36000305072

Element(0) va dans la colonne 1, facile
Commençons par la fin :
Element(8) va dans la colonne 5 (*)
Element(7) va dans la colonne 4
Element(5) & " " & Element(6) vont dans la colonne 3
Ne reste plus que le contenu de la colonne 2 qui sera composé du reste des élements, c'est à dire : Element(1) & " " & Element(2) & " " & Element(3) & " " & Element(4)
(*) Le chiffre 8 te sera donné par UBound(Element)

Voilà, il te faut maintenant tester le nombre maxi d'éléments et en déduire le nombre d'Elements composant le texte de la colonne 2 = UBound(Element) - 4.
Il te suffit de faire une boucle du genre :
For r = 1 To (UBound(Element) - 4)
  Colonne2 = Colonne2 & Element(r) & " "
Next r

Dans le cas de la deuxième ligne, il n'y a pas de champ en première position, mais Element(0) existera quand même, mais vide. A toi de voir ce qu'il faut en faire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
31 août 2009 à 21:20
Salut
Assez confus tout ça.
Merci d'utiliser la colorisation syntaxique de la zone de saisie des messages : cela rend la lecture plus facile aux autres et garde les espaces de début de ligne.
+ Evite de garder les lignes vides, à la lecture, on ne peut pas avoir de vue d'ensemble = chiant à lire, donc quand on n'a pas le courage, on ne lit pas ...

On voit bien tes données, récupérées du presse-papier, mais personnellement, je n'ai rien compris à ce que tu veux en faire.
De plus, on ne sait pas d'où viennent ces textes ? de quelle application ?
Sont-ils formatés en tableau à l'origine ?
Essaye de recoller le texte en remplaçant manuellement les séparateurs de colonen par des @ ou des | au lieu des espaces
+ nous dire quelle donnée doit aller dans quelle partie de la ListView.

Pour info, cette ligne ne sert strictement à rien :
ligne = left(CStr(ligne), Len(ligne))

As-tu regardé dans l'aide de Clipboard.GetText ?
As-tu essayé de lire au format RTF ?
Clipboard.GetText ClipBoardConstants.vbCFRTF
Dans ce format, peut-être que les séparateurs de champs sont des Tab et pas des espaces ... A approfondir

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
FOUNI
Messages postés
29
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
8 mars 2013

1 sept. 2009 à 08:59
Merci d' avoir répondu si rapidement

N' ayant pas l'habitude des forums je n'ai pas compris comment
utiliser la colorisation syntaxique de la zone de saisie des messages ?

Autrement le texte que je veux placer dans une listview vient d'une application SAP à laquelle je n'ai pas accès au données sauf en lecture , ni au code, donc je copie dans le presse papier et j'aimerai placer ce texte dans une listview, comme cela je pourrais modifier ce texte ou autre.

texte formatés en tableau à l'origine ? oui

ligne = left(CStr(ligne), Len(ligne)), en effet j'aurai dù la supprimer

As-tu regardé dans l'aide de Clipboard.GetText ?oui mais je récupère l'ensemble du texte uniquement dans une case de la listview alors que je veux chaques valeurs en colonne voir plus bas.

As-tu essayé de lire au format RTF ?non je vais etudier cela merci

voici le fichier avec séparateur de colonne que je désire dans la listview

20001766351 @ FI Facture de souscription @ 19.12.2007 03.01.2008 @ 0,30 @ 36000305072
@ EP Encaissement @ 04.01.2008 04.01.2008 @ 9,26-@ 36000305072
@ EP Encaissement @ 04.01.2008 04.01.2008 @ 0,59-@ 36000305072
@ EP Encaissement @ 04.01.2008 04.01.2008 @ 0,30-@ 36000305072
17502106025 @ FI Facture cyclique @ 11.02.2008 26.02.2008 @ 9,52 @ 37000371889
17502106025 @ FI Facture cyclique @ 11.02.2008 26.02.2008 @ 28,43 @ 37000371889


merci je continu mais recherche
0
FOUNI
Messages postés
29
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
8 mars 2013

1 sept. 2009 à 11:44
merci jack pour toutes ces infos , j'utiliserai dès que possible tes conseils très précieux.

merci , il y a vraiment des personnes à l'écoute dans ce forum
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
1 sept. 2009 à 12:56
Cool, merci
0