Écrire en tableau dans un TXT

danielgrd Messages postés 47 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 juin 2005 - 9 juin 2005 à 15:25
danielgrd Messages postés 47 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 juin 2005 - 22 juin 2005 à 15:11
Bonjour,



Ceci est une continuité de ce post : http://www.vbfrance.com/forum.v2.aspx?ID=357484



Ce serait plus facile si vous iriez lire le post ci-haut mais je vais résumer ici quand même...



Dans le post ci-haut on m'a donné un code qui permet de lire séparément
chacune des valeurs séparées par des # dans un fichier .txt



Par exemple, un fichier Test.txt peut contenir cela :



Valeur1#Valeur2#Valeur3#Valeur4#Valeur5

Valeur6#Valeur7#Valeur8#Valeur9#Valeur10

Valeur11#Valeur12#Valeur13#Valeur14#Valeur15

etc...



Et si je veux avoir, par exemple, la Valeur 9, je n'ai qu'à écrire dans ma form :

GiveMots(App.Path & "\Test.txt",2, 4)



Mais maintenant je voudrais pouvoir remplacer(écrire) une valeur existante par une nouvelle d'une manière tout aussi facile...



Par exemple, en écrivrant le nom du fichier, la rangée, la colonne ainsi que le valeur à écrire...



Si vous aller voir sur l'autre post ci-haut, on m'a expliqué les étapes
à suivres, mais comme je ne suis pas doué pour construire mes propres
codes alors...



Merci d'avance!

2 réponses

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
9 juin 2005 à 18:08
Salut
L'astuce consiste à charger tout le fichier dans une chaine, puis à transformer la chaine en tableau.
Ainsi, chaque donnée sera accessible par son index (de 0 à x) :
-1- Lire le fichier entier :
Dim Chaine As String
Open "fichier.txt" For Binary As #1
Chaine = String(LOF(1), " ") ' prépare chaine de même longueur pour le GET
Get #1, , Chaine
Close #1

-2- Transformer ta chaine en tableau
Dim Tablo() As String
Tablo = Split(Chaine, "#")
Valeurs (sans les #) contenues dans Tablo(0) à Tablo(UBound(Tablo))
Nota : Split ne fonctionne qu'avec les chaines. Donc, si tes données ne sont que des chiffres, il faudra que tu gères proprement les passage de Chaine à chiffre et l'inverse (avec les fonctions Val, CLong, CSng ...)

-3- Pour modifier une des valeurs :
Tablo(12) = "Valeur18"

-4- Pour refabriquer une chaine à partir du tableau :
Chaine = Join(Tablo, "#")

-5- Réécrire le fichier
Open "fichier.txt" For Binary As #1
Put #1, , Chaine
Close #1

Attention toute fois : D'après l'exemple que tu as mis, tes valeurs, séparées par des # sont aussi organisées par ligne, séparées par des vbCrLf : Si c'est le cas, il faudra lire le fichier ligne par ligne, appliquer le Split sur la ligne. Regarde l'aide de la fonction Split, je crois qu'on peut faire un Split sur un tableau à deux dimension (lignes, valeurs) par exemple.
En fait, ton fichier ressemble à un fichier de type CSV, cher à Excel.
Cherche parmi les sources de vbfrance celles qui parlent d'importer des fichiers CSV

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
danielgrd Messages postés 47 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 juin 2005
22 juin 2005 à 15:11
S'adresse à tous... Pas nécessairement que à Jack...



Bonjour,



Merci de votre réponse... Par contre, comme je l'ai dit précédemment,
je ne suis pas très doué pour la construction et le 'bizouillage' de
code... Et j'avoue que vous me perdez vers la fin...



À noter que les valeurs qui seront dans le fichiers seront autant des chiffres que des lettres ou des symboles...



Donc, finalement, comment dois-je faire pour aller remplacer la 'valeur
9' dans la 'rangée 2' 'colonne 4' par une tout autre valeur???





Merci d'avance
0
Rejoignez-nous