[VB] Utilisation d'un fichier externe

Fermé
Cutter - 18 févr. 2002 à 17:18
 Cléora - 20 févr. 2002 à 17:37
Hello

Je débute complètement à VisualBasic
J'aimerais utiliser un fichier texte externe comme "base de données" pour mon prog.
Exemple: si j'ai une ligne "COCHER_CASE1" dans mon fichier, j'aimerais que mon prog le lise et coche la case 1.
De même dans l'autre sens: si je coche la case 1, j'aimerais que le prog ajoute la ligne "COCHER_CASE1" dans mon fichier texte.
Merci de votre aide.
A voir également:

10 réponses

En VB,
Avec 1 comme numéro de fichier et ligne comme variable string :
pour lire une ligne : line input #1, ligne
pour écrire une ligne (en écrasant l'éxistant) : print #1, ligne
Pour ne pas l'écraser, il faut ouvrir le fichier en mode append (pas output) ça écrit à la fin du fichier.
0
J'ai relu ton message plusieurs fois et j'avoue que j'ai un peu de mal à comprendre. Pourrais tu poster le code exact en prenant pour example "Check1" comme case à cocher et "COCHER_CASE1" comme ligne dans le fichier.
Excusez, je suis un peu nunuche mais j'ai commencé le VB avant-hier seulement! :-)
0
Il n'y a aucun mal à demander quand on ne sait pas! :-)
Bon, je vais essayer de te donner un code à peu près correct.

dim chaine as string

'Si la case n'est pas cochée
if check1.value = unchecked then
'on lit le fichier
Open "c:\nom_fichier" For Input As 1
Line Input #1, chaine
close 1

'si le fichier a la ligne on coche la case
if chaine = "COCHER_CASE1" then
check1.value = checked
end if
else
'si la case est cochée on écrit la ligne dans le fichier
open "c:\nom_fichier" for output as 1
print #1, "COCHER_CASE1"
close 1
end if

Voilà, j'espère que tu vas y voir un peu plus clair :-)
0
OK, merci de ton aide! Je vais essayer et je t'en dis des nouvelles :)
0

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

Posez votre question
Oui ca marche en effet assez bien. Merci beaucoup :)

J'aurais une autre question:
j'ai remarqué que lorsque le prog ecrit une ligne dans le fichier, il efface tout le reste. Je veux garder le contenu du fichier ainsi que l'ordre des lignes. Ya-til un autre moyen que de le faire écrire la ligne A LA FIN du fichier?
J'aimerais également savoir s'il existe un moyen de remplacer une ligne. Par exemple, remplacer CASE1_COCHEE par CASE1_DECOCHEE. Cela m'aiderait à garder l'ordre de toutes les lignes à l'interieur du fichier.
0
Je ne connais pas de moyen de réécrire à un endroit précis du fichier. A mon avis, le meilleur moyen est de te servir d'un fichier temporaire, dans lequel tu réécris ton fichier ligne par ligne avec les mises à jour. Ensuite tu renommes ce fichier comme l'ancien.
Ainsi tu gardes l'ordre des lignes, et tu peux en remplacer.
Il faut pour cela ouvrir ton fichier en mode append, qui écrit à la fin du fichier.
0
J'avoue que cette solution m'embarasse un peu. Le fichier dont je compte me servir est assez long et contient beaucoup de commentaires. Je me vois mal devoir réécrire le fichier entier à chaque modification mineure. N'existe t-il vraiment pas de moyen de remplacer un mot par un autre (à la manière des traitements de texte: "Rechercher et remplacer"), cela m'aurait aidé énormément.
0
On m'a toujours dit que tout problème avait sa solution :-)
Malheureusement, je ne peux pas t'aider d'avantage. Essaye de poser ta question sur un autre forum, ou de voir les sites qui présentent des astuces pour vb. Ou alors, reformule ta question sur ce forum, peut-être que quelqu'un saura mieux que moi.
Bonne chance!
0
OK, merci quand-même pour ton aide :)

J'aimerais encore savoir si il est possible de faire un "alias" (ou appelez le comme vous voulez), pour ne pas avoir à réecrire plusieurs fois la même ligne de code. Par exemple, je définis une fois l'"alias" et lorsque j'en ai besoin dans mon code, je tape le nom de l'alias au lieu de retaper tout le code.
0
Le plus simple est de passer par des fonctions. Ou alors fait comme moi : je me suis crée un fichier word qui contient des bouts de code pour ne pas avoir à aller les chercher, ou pour me souvenir de certaines astuces de VB que j'ai utilisé dans mon programme.
0