Comment chercher une chaine et lire la ligne suivante

ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007 - 21 avril 2004 à 22:16
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007 - 26 avril 2004 à 20:50
Bonjour,

voici mon blem :
j'ai un fichier texte nommé c:\test.txt, à l'intérieur j'ai :
"
bonjour
salut

aurevoir
a bientôt

merci
de rien

"
Dans mon programme, j'ai une textbox nommé Text1 et une autre Text2. avec un bouton command.

Je veux que si je tape dans text1 : aurevoir, qu'il affiche dans text2 : a bientôt.

voilà le bout de code qu'on m'a donné ( dans ce forum, merci ;-) ) qui me permet de verifier si le contenue de text1 est égale à un mot du fichier :

Open "c:\test.txt" For Input As #1
If InStr(LCase(Input(LOF(1), 1)), LCase(Text1)) Then Text2 =

il me manque la suite.....

Merci pour votre aide, et d'aider les newbbies comme moi !

13 réponses

Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
22 avril 2004 à 00:27
dim fin as boolean
dim mot1 as string
dim mot2 as string
fin=false
while not(eof(1)) and not(fin)
'tu les deux lignes par deux lignes
line input #1,mot1
line input #1,mot2
if ucase$(trim$(mot1))=ucase$(trim$(text1)) then
fin=true
text2.text=mot2
end if
wend
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
22 avril 2004 à 09:45
Merci Tilois, mais ça ne marche pas : à la ligne :

While Not (EOF(1)) And Not (fin)

j'ai une erreur ( nom ou numero de fichier incorrecte )

Merci pour votre aide
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
22 avril 2004 à 18:48
alors ...

voila ce que j'ai fais, problème ça marche que sur les deux première ligne, qui peut m'aider ? SVP pour le newbbies de service :

Private Sub Command2_Click()
Dim mot1 As String
Dim mot2 As String
Open "c:\test2.txt" For Input As #1
Line Input #1, mot1
Line Input #1, mot2
If InStr(LCase(mot1), LCase(Text1)) Then Text2 = mot2
Text1 = ""
Close #1
End Sub
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
22 avril 2004 à 22:35
ben oui excuse moi j'azi oublier le open=. c'est normal que ton code ne marche pas sur les autres lignes puisque ton code ne lit effectivement que les deux premieres.
Le open est a mettre avant le while
open "c:\fichier" for input as #1
voila...
0

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

Posez votre question
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
23 avril 2004 à 09:42
MERCI,.... encore une erreur :

l'entrée dépace la fin de fichier à cette ligne :
Line Input #1, mot2

voici l'integralité de mon prog :

Dim fin As Boolean
Dim mot1 As String
Dim mot2 As String
fin = False
Open "c:\test2.txt" For Input As #1
While Not (EOF(1)) And Not (fin)
'tu les deux lignes par deux lignes
Line Input #1, mot1
Line Input #1, mot2
If UCase$(Trim$(mot1)) = UCase$(Trim$(Text1)) Then
fin = True
Text2.Text = mot2
End If
Wend
End Sub
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
25 avril 2004 à 22:07
bon ben ca, ca veux dire que ton fichier ne contient pas des mots deux par deux.
Dans ces cas la tu gere avec un on error goto. C'est pas très ésthétique mais ca marchera !
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
25 avril 2004 à 22:33
non desfois des phrases.....
est ce possible de mettre une ligne entière dans la varible : mot1 et mot2 ?

Merci encore
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
26 avril 2004 à 07:34
Ben tu lis la ligne puis tu met mot2=mot1 ... en fait je suis pas sur de comprendre ta question....
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
26 avril 2004 à 09:32
Pardon......
voila l'exemple de mon fichier texte :
"
Bonjour
Salut comment ça va ?

Aurevoir
J'espere à bientôt !

"

je voudrais que mot2="Salut comment ça va ?", c'est possible ?
avec le code d'en haut ça ne marche que sur les deux premier mais pour le reste j'ai une erreur : "'entrée dépace la fin de fichier à cette ligne :
Line Input #1, mot2".
Voilà

Désolé de pas avoir été claire, et mille merci pour ta patience .
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
26 avril 2004 à 19:48
pour que le code focntionne (celui du haut) il faut que ton fichier possede un nombre paire d'entrées. De plus il ne faut pas mettre de ligne vides entre les entrées ...
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
26 avril 2004 à 20:39
voici mon code :

Private Sub Command3_Click()
Dim mot1 As String
Dim mot2 As String
Open "c:\test2.txt" For Input As #1
Line Input #1, mot1
Line Input #1, mot2
If InStr(LCase(mot1), LCase(Text1)) Then Text2 = mot2

Close #1
End Sub

voici mon fichier test2.txt :

bonjour
Salut ça va ?
aurevoir
A la prochaine...

***********************************
cela ne marche qu'avec les deux premier, si je tape " bonjour " dans text1 , alors text2 affiche " Salut ça va ? " mais si je tape "aurevoir" rien ne se passe .
....

excuses moi encore et merci pour ta patience !
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
26 avril 2004 à 20:49
Ouais, mais la tu n'as pas de boucle qui permettarit de lire tout le fichier. Enkor faut il mettre un do Loop ou un while wend !!
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
26 avril 2004 à 20:50
voila avec ça , ça marche mais j'ai une erreur à la fin de l'execution : While Not (EOF(1)) And Not (fin) à cette ligne... erreur : " Nom ou numéro de fichier incorrecte "

Private Sub Command3_Click()
Dim fin As Boolean
Dim mot1 As String
Dim mot2 As String
fin = False
Open "c:\test2.txt" For Input As #1
While Not (EOF(1)) And Not (fin)
'tu les deux lignes par deux lignes
Line Input #1, mot1
Line Input #1, mot2
If UCase$(Trim$(mot1)) = UCase$(Trim$(Text1)) Then
fin = True
Text2.Text = mot2
Close #1
End If
Wend
End Sub
0
Rejoignez-nous