Ligne dans un fichier (urgent... arf c pr demain)

cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005 - 23 mai 2004 à 12:16
cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005 - 23 mai 2004 à 16:36
Salut !
Alors je rencontre le probleme suivant sur Visual Basic

La chaine knowname contient des noms :

Knowname = "John Jack Jane Jeff"

ET le fichier name.txt contient aussi une liste de nom, avec un seul nom par ligne :

Jack
Jolly
Jeffy

Et je veux chercher dans la chaine knowname si elle contient les noms présent dans le fichier name.txt
Chaque fois qu'un nom est présent dans name.txt et dans la chaine knowname, sa augmente la chaine number de 1.

Dim a As Long
a = FreeFile()
Open App.Path & "\name.txt" For Input As #a 'On ouvre le fichier Name.txt
GetFile = Input(LOF(a), a) 'On recupere les données du fichier dans la variable GetFile
Close #a

For i = 1 To lignes 'La variable Lignes est le nombre total de ligne du fichier Name.txt donc on fait une boucle
Got = Mid(GetFile, position du début de la ligne I, Len(ligne I) ) 'Extrait un nom du texte
If Got est compris dans Knowname Then ' Si le mot extrait du texte est trouvé dans la chaine Knowname Alors :
Number = Number + 1 ' On ajoute 1 a la variable Number
Next
RichTextBox1.Text = Number 'On affiche la variable Number dans la Richtextbox1

Il me manque donc plusieurs fonctions que je ne connais pas :

_ Obtenir la position du début d'une ligne dans un texte (en connaissant son n°)

_Obtenir la taille d'une ligne (en connaissant son n°)

_Rechercher dans une chaine ("If Got est compris dans Knowname Then")

Voila! merci de votre aide
Ps : J'ai un autre probleme
J'ai 4 variables contenant chacune un nombre
Existe t'il une fonction qui permet de déterminer laquelle contient le plus grand nombre?

Encore merci!
+++

9 réponses

cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005
23 mai 2004 à 12:33
all you need is love
stop the war
peace and freedom
0
cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005
23 mai 2004 à 12:38
Finalement une boucle "Do" serait plus appropriée :

Dim LigneLue As String
a = FreeFile()
Open App.Path & "\name.txt" For Input As #a

Do Until EOF(a)
Line Input #a, LigneLue
If LigneLue est comprise dans Knowname Then
Number = Number + 1
Richtextbox1.Text = Number

Mais je ne sais tjrs pas comment écrire "If LigneLue est comprise dans Knowname Then" en Visual Basic.

Par contre je suis tjr blocké pr le probleme 2

Merci
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
23 mai 2004 à 13:38
Voila la solution :

Dim Number As Integer
Dim KnowName As String
Dim Temp As String
KnowName = "John Jack Jane Jeff"

'Verification dans le fichier ligne par ligne
Open "c:\fichier.txt" For Input As #1
    Do While Not EOF(1)
    Line Input #1, Temp
    If InStr(KnowName, Temp) <> 0 Then Number = Number + 1
    Loop
Close #1

MsgBox "Nb de nom présent dans le fichier :" & Number


++
0
cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005
23 mai 2004 à 14:21
Merci bcp pour ta réponse!

Pour mon deuxieme probleme j'ai regardé une source que t'avais posté sur :

http://www.vbfrance.com/forum.v2.aspx?ID=74374#74374

Mais en plus de savoir quel nombre est le plus grand il faut que je détermine quelle variable contient le nombre le plus grand.
J'ai essayé :

Private Sub Form_Load()
Dim tableau(1 To 5)
tableau(1) = 2
tableau(2) = 235
tableau(3) = 33
tableau(4) = 234
tableau(5) = 11

' TRI A BULLE du tableau dans l ordre croissant
For j = 1 To UBound(tableau)
DoEvents
BOL = False
For i = 1 To (UBound(tableau) - j)
If tableau(i) > tableau(i + 1) Then
BOL = True
Temp = tableau(i)
tableau(i) = tableau(i + 1)
tableau(i + 1) = Temp
End If
Next
If Not BOL Then j = UBound(tableau)
Next
MsgBox "le nombre le plus grand est : " & tableau(UBound(tableau))
If tableau(1) tableau(UBound(tableau)) Then Richtextbox1.Text "1"If tableau(2) tableau(UBound(tableau)) Then Richtextbox1.Text "2"If tableau(3) tableau(UBound(tableau)) Then Richtextbox1.Text "3"If tableau(4) tableau(UBound(tableau)) Then Richtextbox1.Text "4"If tableau(5) tableau(UBound(tableau)) Then Richtextbox1.Text "5"


Cependant ce code m'affiche toujours "5" dans la richtextbox alors que ce n'est pas lui le plus grand nombre.
0

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

Posez votre question
cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005
23 mai 2004 à 14:23
Petite rectification :

Cependant ce code m'affiche toujours "5" dans la richtextbox alors que ce n'est pas la variable tableau(5) qui contient le plus grand nombre.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 mai 2004 à 15:17
Ben ouais mais comme tu fais un tri de ton tableau, le plus grand item est forcément dans Tableau(5) (Ou tableau(1) selon que tu fasses ton tri dans 1 sens ou dasn l'autre !)
Il faudrait que tu conserve une trace de ton tableau avant le tri et que tu fasses tes tests de Tableau(ubound(tableau)), qui est effectivement la plus grande valeur du tableau, avec les valeurs de la sauvegarde du tableau !!
tu comprends ?

Christophe R.
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
23 mai 2004 à 15:30
Si tableau(5) contient ensuite le plus grand nombre, car le trie a bulle remplace les valeur de tableau(1 & 5) du plus petit au plus grand.

Ton tableau est donc modifié ensuite dans le 5 tu a bien 235 :

tableau(1) = 2
tableau(2) = 11
tableau(3) = 33
tableau(4) = 234
tableau(5) = 235

voila ++
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 mai 2004 à 16:04
Oui mais si j'ai bien compris, il veut déterminer ou se trouvait le plus grand item avant le tri (dans tableau(2) en l'occurence) ! Donc pour cela, il faut bien conserver une trace du tableau avant le Tri !
Nota ! J'espère que tu ne tri pas le tableau rien que pour cela, sinon il y a une méthode bien plus simple (et sans doute plus rapide, notamment que le BubbleSort)

Christophe R.
0
cptpeaceandlove Messages postés 21 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 25 avril 2005
23 mai 2004 à 16:36
Merci bcp pour vos réponses! g tout reglé grace a vous!
0
Rejoignez-nous