Chercher une chaîne de caractères dans une ligne d'un fichier txt

Résolu
hacker_mt Messages postés 35 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 4 novembre 2010 - 19 janv. 2006 à 20:34
hacker_mt Messages postés 35 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 4 novembre 2010 - 21 janv. 2006 à 14:30
Bonjour



je débute en VB et voici mon problème :

j'ai fait un programme qui écrit dans un fichier .txt des lignes que je saisie.

maintenant je souhaite rechercher un mot spéciale que je vien de saisir
qui serait enregistré dans la variable mot$ dans ce même texte.

Comment faire ?



Merci d'avance

8 réponses

hacker_mt Messages postés 35 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 4 novembre 2010
21 janv. 2006 à 14:30
Merci beaucoup Jack pour ton aide

ça ma bien servit

mon programme marche à merveille

encore merci



hacker_mt
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
19 janv. 2006 à 21:27
Instr(1,"bonjour","jo") retourne 4 (la position du mot "jo" dans le mot "bonjour", au delà du caractère numéro 1)



Si Instr renvoit 0, celà signifie que la chaine recherchée ne se trouve pas dans le mot de départ.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2006 à 03:07
(soutitrage)
Il te faut donc lire, ligne après ligne, le contenu de ton fichier et comparer cette ligne avec la chaine recherchée.
Regarde l'aide des fonctions Open, Line Input #, Close
et parmi les milliers de sources qui parlent de fichiers

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
hacker_mt Messages postés 35 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 4 novembre 2010
20 janv. 2006 à 17:12
je ne veu pas savoir le nombre de lettre d'un mot.

je veu afficher la ligne qui contient le mot stocké dans la variable mot$.

pour vous aider voici mon code :

10 CLS

INPUT "Nouveau (N) ou Chercher (C)"; rep$ 'demande si on veu écrire ou 'rechercher

IF rep$ = "N" THEN 'Si on tape "N" on va a 20

GOTO 20

END IF

IF rep$ = "C" THEN 'Si on tape "C on va a 30

GOTO 30

ELSE 'Sinon on retourne au début du programme

GOTO 10

END IF

20 CLS 'Début de NOUVEAU

PRINT "NOUVEAU"

PRINT

INPUT "Nom"; nom$ 'on saisie nom$

INPUT "Prenom"; pre$ 'on saisie pre$

INPUT "Métier"; met$ 'on saisie met$



a = FREEFILE

OPEN "c:\DOCUME~1\infos.txt" FOR APPEND AS a 'on ouvre info.txt

PRINT #a, "Nom: "; nom$; "Prénom: "; pre$; "Métier: "; met$ 'on marque 'nom : nom$ prenom: pre$ métier: met$

CLOSE (a) 'on ferme le fichier

GOTO 10 'on retourne au début du programme

30 CLS 'Début de CHERCHER

PRINT "CHERCHER"

PRINT

INPUT "Nom"; nom$ 'on saisie nom$

'et c'est la que je sais pas comment faire

'ici il faut ouvrir le fichier

'ici rechercher la chaîne de charactères : "Nom : "nom$

'et ici afficher la ligne ou l'on a trouvé la chaîne de charactères.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2006 à 19:46
Salut
Oh lala : mais ce n'est pas du VB ça, c'est du Basica !
Y-avait longtemps que je n'en avais pas vu ! bigre
Si tu essayes de faire fonctionner ça sous VB6, il va falloir revoir la syntaxe pour profiter des innovations !

Dans ton cas, bien sûr, les commandes VB ne fonctionneront pas.
Il faut utiliser les commandes de base ...
Avant de se lancer la dedans, confirme nous avec quel logiciel tui programmes, stp

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
hacker_mt Messages postés 35 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 4 novembre 2010
20 janv. 2006 à 20:22
avec quickbasic

jai trouvé sa

c ptet pa un super logiciel mais bon

c gratuit et sa marche bien

lol
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 janv. 2006 à 01:35
Oui, c'est un point de vue.
J'ai commencé à programmer la dessus !
Bon, allons-y, mais tu ne choisis pas le plus facile.

-1- Ta méthode d'écriture n'est pas correcte :
La ligne que tu écris mettra bout à bout chaque donnée.
Exemple : PierreMichaudBurelier
A la relecture, comment feras-tu pour redécouper cette ligne est trois variables (champs) ?
Lors de la recherche du "Remi", tu trouveras quand même PierreMichaud !
Impossible sans une règle prédéfinie.
(a) Soit insérer un caractère comme | entre chaque champ
(b) Soit prédéfinir la longueur de chaque champ
(c) Soit encore, mettre les données sur des lignes distinctes
(d) Et tu peux aussi gérer ton fichier en mode Random, avec une structure et une longueur prédéfinie.
Par contre, dans ton cas, la méthode Append est bien celle qu'il faut choisir pour ajouter les données à la suite.

-2- En fonction du choix que tu auras fait en -1-, tu pourras faire ta recherche.

Hélas, QuickBasic n'est plus d'actualité et VB l'a supplanté.
Le bout de QB qui suit n'est pas garanti !
Je l'ai un peu modifier (ajout test pour Quitter le prog + gestion des écritures avec méthode (c))
(J'ai dézippé mes archives de QB, ça fait tout drôle)


10 CLS


INPUT "Nouveau (N) ou Chercher (C) ou (Q)uitter "; rep$ 'demande si on veu écrire ou 'rechercher


IF UCASE$(rep$) = "N" THEN 'Si on tape "N" on va a 20


GOTO 20


ELSEIF UCASE$(rep$) = "C" THEN 'Si on tape "C on va a 30


GOTO 30


ELSEIF UCASE$(rep$) = "Q" THEN 'Si on tape "Q" on sort


END


ELSE 'Sinon on retourne au début du programme


GOTO 10


END IF


20 CLS 'Début de NOUVEAU


PRINT "NOUVEAU"


PRINT


INPUT "Nom"; Nom$ 'on saisie nom$


INPUT "Prenom"; pre$ 'on saisie pre$


INPUT "Métier"; met$ 'on saisie met$


a = FREEFILE


OPEN "c:\DOCUME~1\infos.txt" FOR APPEND AS #a 'on ouvre info.txt


PRINT #a, Nom$


PRINT #a, pre$


PRINT #a, met$ 'on marque 'nom : nom$ prenom: pre$ métier: met$


CLOSE (a) 'on ferme le fichier


GOTO 10 'on retourne au début du programme


30 CLS 'Début de CHERCHER


PRINT "CHERCHER"


PRINT


INPUT "Nom"; Nom$ 'on saisie nom$


'et c'est la que je sais pas comment faire


'ici il faut ouvrir le fichier


'ici rechercher la chaîne de charactères : "Nom : "nom$


'et ici afficher la ligne ou l'on a trouvé la chaîne de charactères.


a = FREEFILE


OPEN "c:\DOCUME~1\infos.txt" FOR APPEND AS #a


DO WHILE NOT EOF(a)


' Lire les lignes par trois, obligatoirement


LINE INPUT #a, NomLu$


LINE INPUT #a, PrenomLu$


LINE INPUT #a, MetierLu$


IF INSTR(UCASE$(NomLu$), UCASE$(Nom$)) > 0 THEN


PRINT NomLu$, PrenomLu$, MetierLu$


END IF


LOOP


CLOSE (a) 'on ferme le fichier


GOTO 10 'on retourne au début du programme

Quel retour en arrière !
Vache, c'est là qu'on s'aperçoit que Windows, c'est quand même plus sympa que Edit du DOS !

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
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 janv. 2006 à 01:37
NB : Quand Econs te disait d'utiliser Instr pour faire ta recherche, tu aurais pu essayer et voir que c'était possible en QB et regarder l'aide. Toutes les fonctions sont dans l'aide de QB.
0
Rejoignez-nous