Gestion de séparateur

Résolu
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010 - 7 févr. 2007 à 15:53
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 8 févr. 2007 à 11:20
Bonjour,
j'ai un fichier texte de 25 lignes avec des inscriptions séparées par des ##@##
exemple :

                TOMATE ##@## BON
                POIREAU ##@## PASBON
                etc...

j'aimerai créer un petit module permettant de vérifier si dans un textbox est présent TOMATE ou POIREAU et si oui alors de remplacer tomate par "BON" et poireau par "PASBON" sachant que le fichier de 25 lignes peut augmenter il est préférable de ne pas liste sur le projet en lui même "TOMATE" "POIREAU" etc... ;)

le contenu du textbox est "j'adore les courgettes c'est très tomate en revanche les poivrons c'est poireau"

j'espère m'être fait comprendre :D
d'avance merci

123

34 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 19:03
Il pourrait y avoir 100 lignes, ce serait toujours pareil !
Et ton fichier peut évoluer comme tu l'entends !
Seule condition ; qu'il soit écrit comme montré plus haut (sa structure) ! au lieu d'être écrit avec un séparateur formé d'une chaîne de caractères (##@##) qui oblige à utiliser un Instr alors que dans une ligne ainsi écrite :
"blabla","blobloblo"
tu tires immédiatement les valeurs toto ("blablabla") et tata ("blobloblo")
par l'instruction input #1, toto, tata


Que te reste-t-il à faire ? Ben... un boucle (voir mon code)... jusqu'à trouver un toto = ton_mot et donc à connaitre immédiatement sa correspondance tata ...

Lance donc mon code dans un petit projet : tu vois bien qu'il trouve un tata pour chaque toto, dans chaque ligne, non ?
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
7 févr. 2007 à 19:39
tu dois être meilleur que moi je pense car moi franchement je comprend pas du tout donc stp si tu peut fournir la source je t'en serai reconnaissant merci pour tout même si j'ai pas du tout compris ;)

123
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 20:05
Je veux bien, mais à une condition (afin que je ne travaille pas à l'aveuglette et, surtout, à côté du problème) :

Tu définis de façon claire ton scénario de remplacement dans la textbox :

1) par quoi ou par qui est-elle écrite ?
2) dois-tu y remplacer un mot déterminé (et par qui ou par quoi  et comment) ou dois-tu systématiquement rechercher si chaque mot qu'elle contient est dans ton fichier texte et, si oui_, le remplacer par sa correspondance  "bon" ou "pas bon" ?
3) la casse du mot doit-elle être nécessairement respectée ou non ?

Réponds clairement et avec précision à ces questions et tout ira très vite
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
7 févr. 2007 à 20:21
je vais essayer de répondre tu va voir c'est pas compliqué :)
j'ai un fichier txt de 25-30 lignes avec en séparateur une chaine de caractère

l'utilisateur aura dans un textbox une des clefs (gauche donc avant le séparateur) si une clefs est repérée alors  il faut que l'app detecte sur quelle ligne est la clef gauche et cherche le contenu droit (après séparateur) et msgbox droit tout simplement ;)

il faut faire cele à chaque fois que la personne appui sur la touche entrée

si tu comprend pas tout n'hésite pas

123
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 21:17
"si tu comprend pas tout n'hésite pas"


Ben... C'est tout-à-fait le cas !!!!
A un détail près : je n'ai absolument rien compris !

Explique un peu mieux, donc :
Combien de textboxes aurais-tu ?  et définis-les clairement !
Qu'appelles-tu "clef" ? Le mot à rechercher ? et si oui : ce mot apparaitraot-il dans une textbox distincte de celle dans laquelle ce mot "proposé" doit être recherché et remplacé ?
Si oui (toujours) : par quel mécanisme le mot à rechercher est-il proposé dans la textbox de "proposition" (pas celle de recherche)

Tu sais quoi ? : j'ai presque l'impression de définir la chose avec plus de précisions que toi (so ma boule de crystal a bien fonctionné). Fais cet effort, s'il te plait !

Serait-ce au bout du compte ceci :

- dans une textbox text1 apparaît un mot, extirpé par un mécanisme quelconque de mon fichier (1ère colonne)
- dans une 2ème textbox text2 apparaît un texte (rédigé par qui et comment) qui peut ou non contenir ce mot
- si le texte contient ce mot, le mot concerné doit être remplacé par la correspondance "bon" ou "pas bon" du mot affoché dans text1

Autres questions :

- la touche ENTREE sur quel contrôle ? La textbox text2 elle même ? un autre contrôle (et lequel ?)
- tu n'as toujours rien répondu en ce qui concerne le respect ou non de la casse !
Réponds à TOUT, s'il te plait !
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
7 févr. 2007 à 21:22
excuse moi peut tu me dire par hasard comment faire pour connaitre ce qui est écrit dans un fichier texte à une ligne bien spécifique ??

123
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 21:28
Tu n'auras cette réponse qu'après avoir répondu à celles que je t'ai posées (principe fondamental).

Je te l'ai pourtant toutefois déjà dit (utilisation d'une boucle) ....
Réponds donc aux questions posées et tu trouveras forcément celà dans mon code !...
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
7 févr. 2007 à 21:32
ok je répond touche entrée c'est sur un textbox1 avec un timer interval 1 dans le timer si le mec appui sur entrée alors suite du code.

nom de la classe je comprend pas :s

123
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 21:39
Tu n'as pas répondu à toutes mes questions ! (prends-les donc une par une et réponds à chacune, avec précision)
Si tu ne le fais pas, j'abandonne, c'est évident !
Qui de parle de classe ? Je t'ai  parlé de la casse (et pas de la classe) !
qu'est la casse ?
Cà :
http://www.tout-savoir.net/lexique.php?rub=definition&code=1350
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 févr. 2007 à 09:09
Salut,
C'est un peu une discution stérile, non?. voyons voir si je peux aussi aider  si tu le permet [auteurdetail.aspx?ID= 615490 jmfmarques].
Alors d'après ce que j'ai lu voila ce que tu cherches à faire  [auteurdetail.aspx?ID=28693 maxsecurite2] :

- Ton Fameux fichier existe déjà et tu y as au préalable rentré les valeurs
- Un textbox sur un form
- L'utilisateur entre par exemple Tomate dans le textbox et appuie sur entrée.
- Le code va chercher Dans le fichier la ligne ou se trouve Tomate et une fois trouvée affiche dans un Msgbox  BON.

Est ce que c'est ca?
Si oui je pense que si tu avais pris la peine d'essayer les codes proposés ( no offence ) tu aurais pu t'en sortir. de plus si c'est ca, on se rend compte aussi que ce n'était pas si difficile à expliquer.

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 févr. 2007 à 09:36
Re,
Bon alors voici mon fichier d'entrée.

Tomate,Bon
Poireau, excellent
j'adore, j'aime pas
courgettes, légumes
très, pas
poivrons, fruits

ouvre un nouveau projet place deux textbox sur une feuille sans les renommer.

Place ensuite ce code appuie sur F5 puis sur entrée dans le textbox du haut puis étudies le code. je marque en gras étudie car si nous prenons la peine d'écrire du code, j'estime que tu dois prendre la peine d'essayer un minimum de le comprendre et de le mettre en pratique (cf le code de [auteurdetail.aspx?ID= 615490 jmfmarques])
Je sais que c'est contre ta facon de faire de  [auteurdetail.aspx?ID=615490 jmfmarques] mais, je trouvais intéressant de montrer une autre approche avec les collections,Mais aussi d'essayer de faire avance la réflexion car, elle stagne.

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
8 févr. 2007 à 09:48
Génial c'est exactement ce que je cherchais ;) merci beaucoup [auteurdetail.aspx?ID=89254 jrivet]
est t'il possible d'empecher la modification de deux valeures en même temps par exemple si je tape dans le text1 tomate et j'adore les deux valeures vont être modifiées est t'il possible de modifier que la première en l'occurence tomate ?

merci beaucoup

123
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 févr. 2007 à 09:53
Re,
Il te suffit d'ajouter un parametre à ReplacePhrase qui serait le nombre de mot à remplacer.

- Une variable compteur dans la meme fonction (init à 0)
- Si Compteur = Nbr Mot a remplacer, Alors Sort de la Fonction.

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 févr. 2007 à 11:20
Excusez-moi d'insister...

Mais si le fichier de lecture était construit comme je l'ai expliqué plus haut, à savoir :
"Tomate","Bon"
"Poireau", "excellent"
"j'adore", "j'aime pas"
"courgettes", "légumes"
"très", "pas"
"poivrons", "fruits"

tout ceci


Open "C:\Test.txt" For Input As NumFile 
        While Not EOF(NumFile) 
            'On lit ligne par ligne le fichier de correspondance
            Line Input #NumFile, Ligne 
            'On "casse" la ligne suivant le séparateur ","
            '=> toi tu peux mettre "##@##" si tu veux
            Split_Ligne = Split(Ligne, ",") 
            'On ajoute à notre collection l'élément a droite du séparateur
            'avec en Clé l'élément de gauche
            Call C_Concordance.Add(Trim(Split_Ligne(1)), Trim(Split_Ligne(0))) 
        Wend 
    Close NumFile 




se résumerait à ce qui suit (aucun besoin de split)

Open "C:\Test.txt" For Input As NumFile 

    While Not EOF(1)
      Input #1, toto, tata
      Call C_Concordance.Add(tata, toto)

  Wend
Close NumFile 
0
Rejoignez-nous