Csv et acces, enregistrement incomprehensible

unwired Messages postés 2 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 7 janvier 2007 - 5 janv. 2007 à 10:50
unwired Messages postés 2 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 7 janvier 2007 - 7 janv. 2007 à 12:48
bonjour,

alors j'expose mon problème
je dois enregistrer dans un fichier csv a une ligne particuliere des données
par exemple j'ouvre le logiciel, il recupere les deux premieres colonnes et les met dans une base access generé ( plus rapide pour chercher dans le fichier que dans un csv)
Une fois que j'ai l'identifiant que je cherche, je vais le choisir directement a la ligne souhaitée dans le fichier
Tout cela fonctionne nickel mais là ou ca bloque, c'est lorsque je souhaite rajouter une valeur dans une colonne de cette ligne
L'enregistrement se fait d'une maniere qui me depasse c'est a dire qu'il rajoute sur quelques lignes avant et apres des ",," et dans la case souhaitée ",,valeur a enregistrer"

je met donc mon petit code ^^:

pour l'ouverture du fichier csv, repris d'un tuto d'ici meme:

Public Function membres() As Excel.Worksheet
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open(App.Path & "\membres.csv")
Set membres = wbExcel.Worksheets(1)
End Function

ça c'est dans un module

et là c'est la procedure pour la recherche:

Private Sub rechercher_Click()

Dim req As String
Dim connex As New ADODB.Connection
connex.Provider = "Microsoft.Jet.Oledb.4.0"
connex.ConnectionString = App.Path & "\membres.mdb"
connex.Open

Dim result As New ADODB.Recordset
req = "select cle,nom from membres where code='" & code.Text & "';"  ' je fais la recherche dans la table pour retrouver la clé qui correspond a la ligne dans le fichier et le nom , c'est une requete pour tester!
result.Open req, connex
result.MoveFirst

affresultat = result("cle")
affresultat = affresultat & " " & result("nom")  ' j'affiche les resultats pour verifier visuellement les données retournée et elles sont correctes

membres.Cells(result("cle"), 3).Value = "test"   ' modifie le fichier de maniere incomprehensible. J'ajoute a la 3ieme colonne la valeur "test"
ferme   ' il  me demande meme de sauvergarder le fichier donc ça fonctionne
affresultat = affresultat & " " & membres.Cells(result("cle"), 2).Value  ' deuxieme test, il ne recupere plus le nom trouvé le fichier.
ferme
End Sub

Exemple du fichier :

481100;NOM1;
481103;NOM2;,,
490143;NOM3;,,
490214;NOM4;,,test
490518;NOM5;,,
490572;NOM6;,,
490578;NOM7;
490583;NOM8;

Voilà merci d'avance pour ceux qui peuvent m'aider
j'ai cherché un peu partout depuis avant hier et je n'ai vraiment pas trouvé le problème

2 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
6 janv. 2007 à 23:08
Salut,

Il y a pas mal de membres dans ce code, on croirait une pieuvre...
membre.csv, membre.mdb en plus d'une Function membre qui me paraît un peu louche. Il me semble qu'il y a trop de SET dans cette Function.

Quoiqu'il en soit, y a-t-il une raison primordiale de créer un objet Excel pour lire le fichier CSV ?
Ne pourrais-tu pas l'ouvrir simplement avec
Open Fichier For Input as #1
Lire les lignes et récupérer les 2 données avec Split()
Puis récrire le tout dans un 2e fichier CSV ?

Ou encore ouvrir tout le fichier dans une variable String ou un tableau, faire tes modifs et écrire tes modifs dans le même fichier en mode Output pour tout écraser (?)

Autre chose, après la ligne suivante, fais un Msgbox pour afficher la valeur
affresultat = result("cle")
Msgbox affresultat
au moins pour voir si c'est bien la valeur souhaitée

MPi
0
unwired Messages postés 2 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 7 janvier 2007
7 janv. 2007 à 12:48
salut. les valeurs qui s'ajoutent sont les bonnes, il n'y a pas de pb. Je ne veux pas travailler avec un autre fichier car ce csv contient beaucoup trop de ligne pour fonctionner comme ça.
je crées une base membre avec les deux premieres colonnes du fichier auxquelles je rajoute le numero de ligne dans le fichier. Comme ça, il y a une recherche plus rapide sur ces deux premieres colonnes et ensuite je peux facilement acceder a la ligne souhaitée directement.

Donc vraiment la seule chose qui me choque c'est : comment en attaquant une ligne directement il arrive a modifier les autres lignes!
0
Rejoignez-nous