maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010
-
7 févr. 2007 à 22:47
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
8 févr. 2007 à 11:46
bonsoir,
depuis tout à lheure je recherche en vaint un module pour lire une ligne précise dans un fichier text donc maintenant j'aimerai savoir comment faire pour lire par exemple la ligne 4 d'un textbox sachant qu'il est bien sur multiligne
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 févr. 2007 à 01:50
salut,
et sans split on a aussi la bonne vieille solution des API
Option Explicit
Private Const EM_GETLINE As Long
= &HC4
Private Const EM_LINEINDEX As Long
= &HBB
Private Const EM_LINELENGTH As Long
= &HC1
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As
Long
Private Declare Function SendMessageStr Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As String) As Long
Private Sub Command1_Click()
MsgBox GetItem(Text1, 3)
End Sub
Private Function GetItem(ByRef TB As TextBox, lRow As Long) As
String
Dim lLineIndex&, lLength&
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 7 févr. 2007 à 22:53
Ligne réelle ou ligne virtuelle ?
Les lignes réelles sont séparées par de vrais sauts de lignes
Les lignes "virtuelles" sont le résultat d'un affichage et diffèrent selon la largeur (dimensions données à l'affichage) de la textbox
Le traitement n'est évidemment pas le même dans un cas et dans l'autre .
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 7 févr. 2007 à 23:16
Ces lignes sont alors en effet séparées par un saut de ligne.
Sous VB, ce saut de ligne corresponf à la constante VBCrLf
Il te faut dans ce cas utiliser la fonction Split (aide en ligne sou F1 sur ce mot) pour éclater le texte en te servant de VBCrLf comme séparateyr.
Dans le tableau généré par ce Split, il te suffira de lire la valeur correspondant à ton numéro de ligne.
Un rappel toutefois : ton tableau va commencer à l'index 0 et non 1. Dans ce cas, pour extraire ce qui se trouve à la ligne n il faut lire le contenu de l'index n-1 du tableau obtenu.
Il est très important que tu ouvres ron aide en ligne sur le mot Split et que tu t'imprègnes bien des mécanismes qu'il induit. Des exemples accompagnent la rurique que tu ouvriras ainsi.
Fait également une recherche sur ce forum avec le mot Split ... Tu trouveras de très nombreux exemples d'utilisation.
Vous n’avez pas trouvé la réponse que vous recherchez ?
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 7 févr. 2007 à 23:22
avec la fonction split on peut extraire une ligne précise je savais pas merci je vais essayer si par hasard tupeut fournir un petit code c'est pas de refu ;)
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 7 févr. 2007 à 23:38
j'ai du mal m'expliquer parce que je vois pas du tout l'interet d'un split
je fais ouvrir le contenu du fichier text dans un textbox de la sorte
ligne1
ligne2
ligne3
...
il faut juste par exemple que quand la personne clic sur bouton1 un message box affiche le contenu de la ligne 2 et que la ligne2 donc et que si c'est soit extrait du fichier txt ou du textbox sa m'est égal du moment que je puisse savoir ce qu'il y à d'écrit à cette ligne 2
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 7 févr. 2007 à 23:57
"es tu sur que faire un split est obligatoire ?"
Ma réponse va être très courte et très nette :
Je ne me sers personnellement jamais de cette fonction, lui préférant l'utilisation de Instr conjuguée à Mid et/ou à Left et Right et, quelquefois, Len
Je t'ai signalé Split car c'est pour toi ce qu'il y a de plus facile à mettre en oeuvre. Rien maintenant ne t'empêche de faire comme moi, mais alors : bonne étude de toutes les fonctions que je t'ai signalées.
Il n'existe auucune autre solution que Split ou ce que je fais, pour faire ce que tu cherches à faire.
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 8 févr. 2007 à 00:15
d'accord et peut te me montrer un exemple concret stp car la honnetement je bug :) j'essaye de comprendre mais sa passe pas donc si tu peut me montrer en un code assez simple sa serait super
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 8 févr. 2007 à 00:21
Il n'existe rien de plus simple que le code qui se trouve dans le lien que je t'ai déjà donné plus haut !
Je vois mal ce qui pourrait être encore plus simple que cet exemple !
revoilà le lien; donc...
http://www.vbfrance.com/infomsg_FONCTION-SPLIT_16418.aspx Désolé, mais, là...
Bonne nuit.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 8 févr. 2007 à 00:51
Salut,
si tu veux pas passer par Split, il existe une autre solution
MsgBox AfficherLigneTextBox(Text1, 1)
Private Function AfficherLigneTextBox(TxtBox As TextBox, Numero As Integer) As String
Dim i As Integer
TxtBox.SelStart = 0
TxtBox.SetFocus
For i = 1 To Numero - 1
SendKeys ("{DOWN}"): DoEvents
Next
SendKeys ("+{END}"): DoEvents
AfficherLigneTextBox = TxtBox.SelText
End Function
donc ce code me renvoi directement le nombre de fois que searchchar est dans searchstring mais comment faire pour connaitre à quelle ligne est searchchar ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 8 févr. 2007 à 11:46
Avec Split, ce serait simple pourtant...
Un Split sur vbCrLf te donne chaque ligne dans un tableau.
Une boucle de ce tableau avec Instr pour rechercher le texte
et tu as ta réponse rapido-presto...