danielgrd
Messages postés47Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention22 juin 2005
-
9 juin 2005 à 15:25
danielgrd
Messages postés47Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention22 juin 2005
-
22 juin 2005 à 15:11
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...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
danielgrd
Messages postés47Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention22 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???