Chercher une chaîne de caractères dans une ligne d'un fichier txt [Résolu]

Signaler
Messages postés
35
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2010
-
Messages postés
35
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2010
-
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

Messages postés
35
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2010

Merci beaucoup Jack pour ton aide

ça ma bien servit

mon programme marche à merveille

encore merci



hacker_mt
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
(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)
Messages postés
35
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2010

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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
35
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2010

avec quickbasic

jai trouvé sa

c ptet pa un super logiciel mais bon

c gratuit et sa marche bien

lol
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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.